我刚刚安装了一个在后端运行 NGINX 的新 LAMP 服务器。虽然并非每次都会发生 - 某些 HTTPS 请求正在 URL 中寻找端口 7081。例如:
这是 NGINX 的预期行为吗?我相信它几乎肯定与 NGINX 有关,因为禁用它(并且仅运行 apache)不会产生此错误。
#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;
}
Run Code Online (Sandbox Code Playgroud)
#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;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这一定与HTTPS中切换目录有关。同一域级别上存在的任何页面(例如联系我们页面)都不会导致此错误。但是,一旦从子目录(例如管理站点)建立 https 连接,就会发生端口 7081(这是自 NGINX 接管 443 端口以来为 Apache 新重新配置的 ssl 端口)。
使用 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/
Run Code Online (Sandbox Code Playgroud)
我注意到,如果将尾部斜杠添加到实际链接中,则问题不会再发生。这几乎就像 NGINX 正在获取请求的 URI,尝试以文件形式访问目录,并将其传递给 Apache,从而导致 301 重定向。添加尾部斜杠可以消除此问题,但这并不完全是我希望的解决方案。当然 NGINX 中有一个配置可以解决这个问题。
小智 5
到目前为止提供的答案都是针对 NGINX 配置的,这使得它们成为有效的答案,但是我发现Plesk v11 服务器的实际问题(即本例中的情况)在于Plesk服务器上的Apache配置错误
迄今为止,Plesk 尚未提供修复程序,但他们确实提供了一些解决方法:
http://kb.parallels.com/en/114425
请注意,链接到的文章引用了 PHP 代码,但该问题也更普遍地适用于 Apache 级别。默认情况下,Apache 倾向于将文件夹(例如 /test)重定向到其“正确”的 url 等效项(例如 /test/),但是由于 Apache 在 Plesk v11 服务器上的端口 7080 和 7081 上运行,并且 Apache 没有被运行,因此此重定向失败。配置来处理这些场景。
| 归档时间: |
|
| 查看次数: |
3936 次 |
| 最近记录: |