Вот мой блок сервера от nginx.conf, я пытаюсь переписать свои запросы, который происходит прекрасный, но мое восходящее имя хоста не устанавливается правильно, это всегда решает к фактическому IP-адресу, но моему API, размещенному как виртуальный хост в апаче, таким образом, конечная точка всегда возвращается 500, какие-либо идеи, как я могу зафиксировать это?
listen 8090;
server_name example.dev.xyz.com;
set $api_path http://example-dev/api;
location ~ ^/api/ {
rewrite ^/api/(.*) /$1 break;
proxy_pass $api_path;
proxy_redirect off;
proxy_set_header Host $server_name ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
вот детали от журналов nginx
...top/api-aggregator-master/sandbox/lua/system/sandbox.lua: in function <...top/api-aggregator-master/sandbox/lua/system/sandbox.lua:1> while sending to client, client: 127.0.0.1, server: example.dev.xyz.com, request: "GET /aggr/conversations HTTP/1.1", host: "localhost:8090"
2013/10/02 09:21:57 [warn] 27711#0: *8 an upstream response is buffered to a temporary file /Users/santthosh.selvadurai/Desktop/api-aggregator-master/sandbox/proxy_temp/4/00/0000000004 while reading upstream, client: 127.0.0.1, server: example.dev.xyz.com, request: "GET /aggr/conversations HTTP/1.1", subrequest: "/v1/GetTopicPage", upstream: "http://XX.XX.110.48:80/api", host: "localhost:8090"
2013/10/02 09:21:57 [error] 27711#0: *8 lua entry thread aborted: runtime error: ...top/api-aggregator-master/sandbox/lua/system/sandbox.lua:86: attempt to concatenate field 'function_to_call_file' (a nil value)
stack traceback:
coroutine 0:
Поскольку вы устанавливаете заголовок 'Host' через proxy_set_header
, вы можете изменить вашу директиву proxy_pass
на действительный IP адрес вашего внутреннего сервера, вместо того, чтобы полагаться на DNS. Возьмем, к примеру;
location / {
proxy_pass http://10.0.0.2;
proxy_set_header Host www.example.com;
# various other required directives omitted
}
Это инициирует соединение с 10.0.0.2
на порту 80, посылая Host
заголовок www.example.com
. Если www.example.com
разрешится на 10.0.0.2
, то это будет то же самое, что и:
location / {
proxy_pass http://www.example.com;
}
Надеюсь, это поможет.
.