![NGINX 列表已正确配置为接受 HTTP 流量,但收到“纯 HTTP 请求已发送到 HTTPS 端口”400 错误](https://linux22.com/image/792529/NGINX%20%E5%88%97%E8%A1%A8%E5%B7%B2%E6%AD%A3%E7%A1%AE%E9%85%8D%E7%BD%AE%E4%B8%BA%E6%8E%A5%E5%8F%97%20HTTP%20%E6%B5%81%E9%87%8F%EF%BC%8C%E4%BD%86%E6%94%B6%E5%88%B0%E2%80%9C%E7%BA%AF%20HTTP%20%E8%AF%B7%E6%B1%82%E5%B7%B2%E5%8F%91%E9%80%81%E5%88%B0%20HTTPS%20%E7%AB%AF%E5%8F%A3%E2%80%9D400%20%E9%94%99%E8%AF%AF.png)
我们在一些服务器上本地托管了一些 IIS 站点,我们正在升级这些服务器。这些站点需要通过 HTTP 和 HTTPS 访问,无论是在新服务器还是旧服务器上。我们为这些服务分配了唯一的端口号,这样就不会发生端口号冲突。我们使用 DNS 将对这些站点的任何调用定向到 NGINX 反向代理,然后 NGINX 反向代理将其定向到适当的服务器。
我尝试通过“http://[site]:8080”访问我们的一个网站,但它给出了 400 错误“纯 HTTP 请求已发送到 HTTPS 端口”。当我将 URL 更改为 https://[site]:8080,它运行正常,我可以正确访问该网站,但我们不想在这里使用 HTTPS,因为我们使用不同的端口来保护流量。
我从 NGNIX 中的现有条目复制了下面的配置,并做了一些更改以将其指向正确的服务器。显示的 SSL 信息已经存在于配置中,因此我将其注释掉,但它仍然具有相同的行为。我还添加了“ssl off”标签,但这似乎也没有任何影响。我做的唯一其他更改是ssl
从listen
行中删除
server {
listen 8080;
server_name [SITE];
ssl off;
#ssl_certificate [certificate path];
#ssl_certificate_key [certificate key];
#ssl_prefer_server_ciphers on;
location / {
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_ssl_certificate [certificate];
#proxy_ssl_certificate_key [key];
proxy_http_version 1.1;
proxy_pass http://[server name]:8080;
proxy_set_header Host $host;
#proxy_set_header Upgrade $http_upgrade;
#proxy_set_header Connection "Upgrade";
}
}
我曾在其他地方发布过有关此问题的帖子,其中有人建议我删除上面注释掉的行,但这似乎没有任何影响,而且我仍然收到相同的错误。
感谢您的帮助!