Nginx:将非www重定向到https上的www

编程入门 行业动态 更新时间:2024-10-19 03:26:22
本文介绍了Nginx:将非www重定向到https上的www的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

如果我在https上,Nginx无法将非www重定向到www:

domain 到 www.domain

我在.conf中的当前设置是:

server { listen 80; server_name www.domain domain; return 301 www.domain$request_uri; } server { listen 443; server_name domain; return 301 www.domain$request_uri; } server { listen IP_ADDRESS:443 ssl; server_name www.domain; ... }

domain 到 www.domain 和 www.domain 到 www.domain 有效,但是https上的非www到www无效. /p>

如果我在第二个server块上添加了IP_ADDRESS,我会在Chrome中看到一个错误(SSL错误),并且(www和非www)都停止工作.

更新:

多亏了斯特芬(答案如下),我将自签名证书更新为*.domain而不是domain.

.conf文件已更新为以下格式:

ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; server { listen 80; server_name www.domain domain; return 301 www.domain$request_uri; } server { listen 443 ssl; server_name domain; return 301 www.domain$request_uri; } server { listen 443 ssl; server_name www.domain; ... }

解决方案

这可能是因为您没有domain的证书,而只有www.domain或* .domain的证书.参见 Nginx重定向www并以裸露的http/https到www 或 serverfault/questions/579916/nginx-redirect-https-www-to-https-non-www-without-untrusted-connection-warn/579917#579917 .

Nginx isn't working to redirect non-www to www if I'm on https:

domain to www.domain

My curent setup in .conf is:

server { listen 80; server_name www.domain domain; return 301 www.domain$request_uri; } server { listen 443; server_name domain; return 301 www.domain$request_uri; } server { listen IP_ADDRESS:443 ssl; server_name www.domain; ... }

domain to www.domain and www.domain to www.domain works, but non-www to www on https isn't working.

If I added the IP_ADDRESS on the second server block, I get an error in Chrome (SSL error) and both (www and non-www) stop working.

UPDATE:

Thanks to Steffen (below answer), I updated the self-signed certificate to be *.domain and not domain.

The .conf file was updated under this format:

ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; server { listen 80; server_name www.domain domain; return 301 www.domain$request_uri; } server { listen 443 ssl; server_name domain; return 301 www.domain$request_uri; } server { listen 443 ssl; server_name www.domain; ... }

解决方案

This is probably because you don't have a certificate for domain, but only for www.domain or *.domain. See Nginx redirect www and naked http/https to www or serverfault/questions/579916/nginx-redirect-https-www-to-https-non-www-without-untrusted-connection-warn/579917#579917 for details.

更多推荐

Nginx:将非www重定向到https上的www

本文发布于:2023-10-31 13:17:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1546193.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:重定向   Nginx   www   https

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!