我正在尝试重定向 https 域名,例如https://example.com到https://example.com/something使用 nginx。当我使用时,它工作正常http://example.com在我的浏览器中,但不起作用https://example.com.我的配置如下。
server {
listen 80;
server_name example.com;
return 301 https://$server_name/something;
}
server {
listen 443;
server_name example.com;
return 301 https://$server_name/something;
}
谢谢!
答案1
- 您缺少 TLS 证书,因此即使您配置了重定向,浏览器也只会响应证书错误。您必须配置
ssl_certificate
和ssl_certificate_key
指令
并且你必须指定安全套接字和http2关于 HTTP/2 的监听指令
对于 HTTP/3http3意味着强制使用 SSL,因此不需要安全套接字在这种情况下应该指定指令。
您的配置存在无限重定向循环,这会导致服务器无法使用。尤其是您无限重定向到 HTTPS。
您的服务器缺少 IPv6 支持。
你应该做这样的事:
server {
listen 0.0.0.0:80 default_server;
listen [::]:80 default_server;
location / {
return 308 https://$host$request_uri/something;
}
}
server {
listen 0.0.0.0:443 http3 reuseport;
listen 0.0.0.0:443 http2 ssl;
listen [::]:443 http3 reuseport;
listen [::]:443 http2 ssl;
server_name $YOURDOMAIN;
ssl_certificate $CERT_PATH;
ssl_certificate_key $CERT_KEY;
[...]
}
另请参阅 Mozilla TLS 配置工具以帮助您: https://ssl-config.mozilla.org/
并根据您的需要进行调整。
注意:仅当您使用 HTTP/3 支持编译 NGINX 时,上述与 http3 相关的配置行才有用,该支持仅在 nginx-quic 分支上可用。