NGINXredirect而不是代理

有这样几个问题,但最相似的是没有答案,其余的都是混杂因素。 以前的工作很好的nginx的部署是redirect而不是代理。 nginx.conf的相关部分看起来像这样;

location /timesheets/ { gzip on; gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; gzip_proxied any; gzip_min_length 1000; gzip_comp_level 2; gzip_http_version 1.0; gzip_buffers 16 8k; gunzip on; gzip_static on; # Disable for IE < 6 because there are some known problems gzip_disable "MSIE [1-6].(?!.*SV1)"; # Add a vary header for downstream proxies to avoid sending cached gzipped files to IE6 gzip_vary on; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://timesheetserver.fqdn.com.au:8216$request_uri; proxy_intercept_errors on; } 

当在server_name部分的URL中访问服务器时,它们在端口8216的时间表服务器上的内容应该被代理给它们。 由于某些原因,它使用302代理服务器进行回复,并且由于用户无法访问8216端口,所以失败了。 这会导致什么?

更新:如果index.html没有结束,那么它是302到proxy_pass服务器。 它工作正常,如果index.html手动追加。 我已经添加了一个索引index.html; 指令,但它似乎并没有处理该文件被closures – 我该如何解决?

  1. 确认从curl,wget等你的nginx反向代理服务器访问http:// timeserver:8216
  2. 如果要使用名称(不是IP地址)进行proxy_pass,请在http,server,location块中使用有效的ipv6选项定义parsing器指令(DNS Server)。
  3. 另外定义resolver_timeout指令。
 location /timesheets/ { # http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver resolver 127.0.0.1 valid=30s ipv6=off; # http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver_timeout # give up and response error resolver_timeout 5s; ### your existing configuration :-) } 

反向代理使用FQDN(完全合格的域名)比timesheetserver服务器更好。

Ref: http : //nginx.org/en/docs/http/ngx_http_core_module.html#resolver