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

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

我刚刚在后端安装了一台运行 NGINX 的新 LAMP 服务器。虽然这种情况并非每次都发生,但某些 HTTPS 请求正在 URL 中寻找端口 7081。例如:

  • http://www.nacdbenefits.com看起来很好
  • 点击联系我们即可重定向到 https
  • 单击页面右下角的链接(我的管理员)会显示端口 7081,一旦登录页面就会导致错误。

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

NGINX 会议

#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;
}

站点 vhost nginx 配置

#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 中切换目录有关。任何页面都存在于同一域级别(例如联系我们页面),不会导致此错误。但是,一旦从子目录(例如管理站点)建立 https 连接,就会使用端口 7081(这是 Apache 新重新配置的 SSL 端口,因为 NGINX 接管了 443 端口)。

更新2

使用 Firebug - 我注意到我的服务器似乎正在应用自动 301 重定向。注意:我当前的 .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,尝试将目录作为文件访问,并将其传递给 Apache,从而导致 301 重定向。添加尾部斜杠可以消除此问题,但这并不是我所希望的解决方案。NGINX 中肯定有一个配置可以解决此问题。

答案1

到目前为止提供的答案都是针对 NGINX 配置的,这使得它们成为有效的答案,但我发现实际的问题Pleskv11 服务器(即本例的情况)存在配置错误阿帕奇Plesk服务器

到目前为止,Plesk 尚未提供修复程序,但他们确实提供了一些解决方法:

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

请注意,链接的文章引用了 PHP 代码,但该问题在 Apache 级别也更普遍。默认情况下,Apache 会将文件夹(例如 /test)重定向到其“正确”的 URL 等效项(例如 /test/),但由于 Apache 在 Plesk v11 服务器上的端口 7080 和 7081 上运行,并且 Apache 未配置为处理这些情况,因此此重定向失败。

答案2

发生的事情是

https://www.nacdbenefits.com/myadmin

重定向至:

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

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

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

如果你想知道该端口上托管的内容,请使用

lsof -i tcp:443

这将显示这是 Apache 还是 nginx 服务器。您发布的是 nginx 初始化脚本,而不是 nginx 配置文件。

希望这能给你一些继续前进的动力!

答案3

您的配置有问题。如果您描述您的架构并发布 nginx 和 apache 配置,IT 将会提供帮助。

https://www.nacdbenefits.com:7081/绝对是可以公开访问的,因此您确实在该端口上运行了一些程序。

答案4

由于后端服务器返回的重定向与 中写入的内容不匹配proxy_pass,因此默认设置proxy_redirect不适合您,您必须proxy_redirect自行配置。以下方法应该可以解决问题:

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

文档了解详情。

相关内容