nginx 配置中想将 http 请求自动转换为 https,搜到N个方案都是下面这样的解决方法,不过我怎么试验失败呢?
server {
listen 80;
server_name www.xxx.com;
return 307 https://www.xxx.com$request_uri;
}
server {
listen 80;
listen 443 ssl;
server_name www.xxx.com;
location / {
root /mnt/www/xxx;
index index.htm index.html;
}
location /xxx {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:20000;
}
}
###
rewrite
那行的$1
,nginx
解析不出,所以重定向到 https://x.x.com
,然后你https下 /
没有配置,所以不通。
改用楼上的 $request_uri
就行。
ps:截图里域名暴露了,赶紧修改一下。
###location /
{
return 301 https://$server_name$request_uri;
}
###
我个人网站nginx
是这样配置https的
首先贴下个人网站地址 https://www.charmcode.cn/
server {
listen 80;
# 监听www前缀和无前缀的http请求
server_name www.charmcode.cn charmcode.cn;
# 跳转到https
return 301 https://www.charmcode.cn$request_uri;
}
server {
listen 443 ssl;
server_name www.charmcode.cn;
root /usr/share/nginx/html;
ssl_certificate "/etc/nginx/cert/www.charmcode.cn.crt";
ssl_certificate_key "/etc/nginx/cert/www.charmcode.cn.key";
# xxx其他转发请求配置
}