在一个研究项目中,我使用 node 创建了一个 web 应用程序。node 服务器托管在一台物理机器上的虚拟机中,这台物理机器与 web 隔离,由另一台机器托管充当反向代理的 Nginx 服务器。我注意到发送到 web 应用程序的一些 POST 请求到达了 Nginx(已记录),但从未到达 node 服务器(服务器没有反应,日志中没有提示express-logger。最令人惊讶的是,相同的请求可以或不能到达第二台机器。这似乎完全是随机的,我的意思是我无法预测请求是否会成功,但如果不成功,我可以再试一次,直到它成功并且它会成功。这是 /etc/nginx/proxy_params :
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Host $http_host;
以下是 sites-available 中的 nginx 文件:
server {
listen 443 ssl spdy; ## listen for ipv4
keepalive_timeout 70;
server_name 10patch.server.com 10patch;
include error_params;
location / {
include proxy_params;
rewrite ^/(.*)$ /10patch/$1 break;
proxy_pass http://raid2016.server.com;
#proxy_redirect off;
}
}
# Forcer le https
server {
listen 80;
server_name 10patch.server.com 10patch;
return 301 https://$server_name$request_uri;
}
我不知道我是否说清楚了,但是我心里对这个问题不是很清楚,而且用英语解释它也并不会使事情变得更容易。