如果你正在运行一个基于 Nginx 的 web 服务器,可能会遇到一个常见的问题:HTTP 请求被错误地发送到 HTTPS 端口。这可能会发生在不同的场景中,例如当用户直接在浏览器中输入 URL,或者当某个应用错误地发送请求。
在这种情况下,Nginx 会返回一个特殊的 497 错误代码,表示接收到了一个期望的是 HTTPS 的 HTTP 请求。虽然 Nginx 提供了一些用于错误处理的配置选项,但正确地处理这种特定情况需要一些额外的配置步骤。
以下是一个如何配置 Nginx 以正确处理此问题的示例:
server {
listen 443 ssl;
server_name store.*;
include /config/nginx/ssl.conf;
client_max_body_size 0;
error_page 497 https://$http_host$request_uri;
location / {
resolver 127.0.0.11 valid=30s;
set $upstream_app 192.168.0.2;
set $upstream_port 8090;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade-Insecure-Requests 1;
proxy_set_header X-Forwarded-Proto https;
}
}
server {
listen 80;
server_name store.*;
location / {
return 301 https://$http_host$request_uri;
}
}
评论 (0)