1
amrnxcdt 2021-10-13 12:04:06 +08:00 via Android
return 301 https://$server_name$request_uri;
换成下面的 rewrite ^(.*)$ https://$host$1 permanent; 试试 |
2
meshell 2021-10-13 12:04:22 +08:00
wwww.example.com 四个 wwww 是几个意思?
|
4
gengchun 2021-10-13 12:08:13 +08:00
@amrnxcdt $host 只是第一个 $server_name,这个要看具体需求吧,假如是想把 www 去掉的话,倒是可以。但是这个问题里没有这么描述。而且他这个配置里也注释掉了。
|
5
AllenHua 2021-10-13 12:15:53 +08:00 via iPhone
域名 http 转 https 建议这样写 `return 301 https://$host$request_uri;`
|
6
xy90321 2021-10-13 13:04:02 +08:00 via iPhone
域名解析里面配了 www 或者 * 了吗?
都没到 nginx 的话怎么改配置都没用 |
7
canbingzt 2021-10-13 14:33:12 +08:00
|
8
ElmerZhang 2021-10-13 15:09:26 +08:00
试试这个配置
``` server { listen 80; server_name example.com wwww.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name example.com www.example.com; ssl_certificate /usr/local/nginx/ssl/example.com.crt; ssl_certificate_key /usr/local/nginx/ssl/example.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; root /home/wwwroot/serverhome; index index.htm index.html; access_log /home/wwwlogs/example.com.log main; } ``` |
9
Arumoh 2021-10-13 15:21:19 +08:00
80 端口不要走 HTTP2
|
10
huangzxx 2021-10-13 16:02:25 +08:00
server {
listen 80; listen [::]:80; server_name example.com www.example.com; return 301 https://$host$request_uri; } |
11
superrichman 2021-10-13 16:10:57 +08:00
error_page 497 https://$host$uri?$args;
利用 http 497 状态码 强制跳转到 https (要啥 http,我嫌麻烦直接关掉了 80 端口 |
13
amrnxcdt 2021-10-16 03:23:19 +08:00 1
@gengchun #4 楼主已经解决了但是还是纠正一下,$server_name 才是在 server_name 指令中配置的第一个域名。
server_name 指令指定多个域名的时候应该用$host 来获取正确的主机名,参考 8#和 10#的重写规则。 因为楼主多域名配置而且是第二个域名访问出现问题,我一开始认为是变量问题。 文档在 http://nginx.org/en/docs/http/ngx_http_core_module.html 的 Embedded Variables 节。 相关讨论 : https://serverfault.com/questions/706438/what-is-the-difference-between-nginx-variables-host-http-host-and-server-na |