Scroll search not working after using NGINX proxy

(Adam Whittaker) #1

Hello, I am trying to route my elasticsearch.js queries through nginx (so that i can set the elasticsearch to

I added this to my nginx config so that anything that hits my domain name with _search get routed to

location ~ ^/.*/_search$ {

My search queries have scroll enabled since some of them can return quite a lot of records. If the search only brings back a few rows then it works fine but if it has to scroll it errors.

When it scrolls i get this error:

Request URL:
Request Method:POST
Status Code:400 Bad Request
Remote Address:serverIP:443


When i scroll without it going through NGINX it looks like this:
Request URL:http://serverIP:9200/_search/scroll?scroll=30s
Request Method:POST
Status Code:200 OK
Remote Address:serverIP:9200

The only difference i see (appart from the domain vs server ip) is that the remote address on the none nginx is 9200 where as with NGINX is 443)

I guess i am missing a setting in NGINX to make this work


Anyone have any ideas why scroll will not work?

Another edit... It doesnt matter if i use 443 or not - if i isolate the _search on any port it does the same..

It gives the following error:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000'

Elasticsearch config has the following:

http.cors.enabled: true
http.cors.allow-origin: "*"

if i add the header via nginx it gives this error:

The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed

Why does it single out the scroll request but nothing else?


(Adam Whittaker) #2

Never mind.. the issue was with my regex only matching URLs that ended with _search rather than contains _search.: location ~ _search {}

(system) #3

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.