新服务器在HTTPS请求上随机添加端口7081

我只是在背面安装了一个新的运行NGINX的LAMP服务器。 虽然每次都不会发生,但某些HTTPS请求正在URL中search端口7081。 例如:

  • http://www.nacdbenefits.com显示正常
  • 点击联系我们redirect到https就好了
  • 点击页面右下方的链接(我的pipe理员)显示一个端口7081,并且一旦login到页面就会导致错误。

这是NGINX的预期行为吗? 我相信这几乎肯定与NGINX有关,因为禁用它(并且只运行apache)不会产生这个错误。

NGINX conf

#user nginx; worker_processes 1; #error_log /var/log/nginx/error.log; #error_log /var/log/nginx/error.log notice; #error_log /var/log/nginx/error.log info; #pid /var/run/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #tcp_nodelay on; #gzip on; #gzip_disable "MSIE [1-6]\.(?!.*SV1)"; server_tokens off; include /etc/nginx/conf.d/*.conf; } 

网站虚拟主机nginx conf

 #ATTENTION! # #DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY, #SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED. server { listen 216.70.86.230:443 ssl; server_name nacdbenefits.com; server_name www.nacdbenefits.com; server_name ipv4.nacdbenefits.com; ssl_certificate /usr/local/psa/var/certificates/cert-rcx4WK; ssl_certificate_key /usr/local/psa/var/certificates/cert-rcx4WK; ssl_client_certificate /usr/local/psa/var/certificates/cert-Wj9EsP; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; client_max_body_size 128m; location / { proxy_pass https://127.0.0.1:7081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Accel-Internal /internal-nginx-static-location; access_log off; } location /internal-nginx-static-location/ { alias /var/www/vhosts/nacdbenefits.com/httpdocs/; access_log /var/www/vhosts/nacdbenefits.com/statistics/logs/proxy_access_ssl_log; add_header X-Powered-By PleskLin; internal; } } server { listen 216.70.86.230:80; server_name nacdbenefits.com; server_name www.nacdbenefits.com; server_name ipv4.nacdbenefits.com; client_max_body_size 128m; location / { proxy_pass http://127.0.0.1:7080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Accel-Internal /internal-nginx-static-location; access_log off; } location /internal-nginx-static-location/ { alias /var/www/vhosts/nacdbenefits.com/httpdocs/; access_log /var/www/vhosts/nacdbenefits.com/statistics/logs/proxy_access_log; add_header X-Powered-By PleskLin; internal; } } 

更新1

我认为这与在HTTPS中切换目录有关。 任何页面将存在于相同的域级别(如联系我们页面)不会导致此错误。 但是,一旦从子目录(例如pipe理站点)build立https连接,端口7081就会发生(自从NGINX接pipe443端口以来,这是Apache重新configuration的ssl端口)。

更新2

使用Firebug – 我注意到我的服务器似乎在应用自动301redirect。 注意:我没有在我当前的.htaccess文件中,所以不知道它来自哪里:

 HTTP/1.1 301 Moved Permanently Server: nginx Date: Wed, 15 Aug 2012 22:27:50 GMT Content-Type: text/html; charset=iso-8859-1 Content-Length: 314 Connection: keep-alive Location: https://www.nacdbenefits.com:7081/myadmin/ 

更新3

我已经注意到,如果尾部的斜杠被添加到实际的链接,问题不再发生。 就好像NGINX正在接受请求的URI一样,试图以一个文件的forms访问该目录,并将其传递给Apache,从而导致301redirect。 添加尾随斜线消除了这一点,但并不完全是我所希望的解决scheme。 NGINX内部的configuration肯定会解决这个问题。

到目前为止提供的答案是针对NGINXconfiguration,这使得他们有效的答案,但是我发现Plesk v11服务器的实际问题(即在这种情况下,这是什么情况),在于Plesk服务器上的Apacheconfiguration错误

到目前为止Plesk还没有提供修复,但是他们提供了一些解决方法:

http://kb.parallels.com/en/114425

请注意,链接到的文章引用了PHP代码,但这个问题在Apache级别上也更普遍适用。 Apache默认情况下会倾向于redirect文件夹,例如/testing它的“正确”的URL等效,例如/testing/但是这是redirect失败,由于Apache在Plesk v11服务器端口7080和7081上运行,Apache不configuration为处理这些情况。

会发生什么

 https://www.nacdbenefits.com/myadmin 

redirect到:

 https://www.nacdbenefits.com:7081/myadmin/ 

因此,您必须查看www.nacdbenefits.com:443 for / myadmin /(这是您的nginx服务器?)以查看是什么导致此redirect。

我猜测有一个.htaccess或其他文件,导致redirect到新的url。

如果你想找出什么托pipe在该端口上,使用

 lsof -i tcp:443 

这将显示这是Apache还是nginx服务器。 你发布了nginx初始化脚本,而不是nginxconfiguration文件。

希望能给你一些东西继续下去!

你的configuration有问题。 如果您描述您的架构并发布nginx和apacheconfiguration,IT将会有所帮助。

https://www.nacdbenefits.com:7081/是绝对可以访问的,所以你可以在那个端口上运行一些东西。

看看你的nginx.conf ,更具体地说是upstream { }声明。

随机行为表明负载均衡configuration。


编辑

根据configuration,您不通过upstream使用负载平衡,但是

  proxy_pass https://127.0.0.1:7081; 

使https请求通过proxy_pass被redirect到端口7081 。 也许这一行来自Internet上的示例configuration?

删除proxy_passproxy_set...行应该修复redirect。

由于您的后端服务器返回的redirect与您的proxy_pass写入的redirect不匹配,因此默认的proxy_redirect不适用于您,您必须proxy_redirectconfigurationproxy_redirect 。 以下应该做的伎俩:

 proxy_redirect https://www.nacdbenefits.com:7081/ /; 

详情请参阅文档 。