切换到宽版
  • 779阅读
  • 0回复

Nginx配置同一个域名同时支持http与https两种方式访问 [复制链接]

上一主题 下一主题
离线梦丫头

Uid:
1 尚未绑定靓号,此帐号可能会被系统回收
 

发帖
148
铜币
4440658
威望
42
贡献值
0
银元
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2019-03-12
Nginx配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的 Pf]L`haGN  
server 0YW<>Y`6  
{ GN(PH/fO9  
listen 80; Gu9Ap<>!  
listen 443 ssl; `[[ A 7  
ssl on; H2[ S]`?  
server_name 域名; ^?w6  
index index.html index.htm index.php default.html default.htm default.php; JoIffI?{(D  
ssl_certificate /usr/local/nginx/cert/21402058063066221.pem; //下载申请后阿里ssh提供的pem & Z*&&  
ssl_certificate_key /usr/local/nginx/cert/21402058063066221.key;//下载申请后阿里ssh提供的key HSq&'V  
ssl_session_timeout 5m; p e |k}{  
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; t d-EB&i\  
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; <LH( >  
ssl_prefer_server_ciphers on;
#|xK> ;  
root /home/wwwroot/网站目录; mi6<;N 2w|  
include laravel.conf; //好吧,这里是laravel配置,不一定合适您哈,请或略 [$ vAjP  
#error_page 404 /404.html; -}4<P}.5T  
include enable-php.conf;
P]bI".A8  
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ rs`H':a /  
{ t9;yyZh  
expires 30d; 3mIVNT@S9  
}
_r^Cu.[7  
location ~ .*\.(js|css)?$ gR )xw)!  
{ OjcxD5"v9  
expires 12h; A|Up >`QH  
}
Wz`MEyj  
access_log /home/wwwlogs/airclass.mime.org.cn.log; n3SCiSr  
}
>j%HVRW  
关键在于上面的listen 80; }`FC'!(   
listen 443 ssl; 开启80端口
dj3}Tjt  
当然,这样玩就没有啥意义了,既然是https,就完全没必要http传输数据啦.我们必须把所有http请求转发到https, eZ'J,;  
把http重定向到https使用了nginx的重定向命令。那么应该如何写重定向?之前老版本的nginx可能使用了以下类似的格式。 QVA)&k'T,  
也就是再添加一个虚拟机server,80端口一个
@ )owj^sA  
server { ;5urIYd  
listen 80; jq#uBU %  
server_name www.domain.com; ?=}~]A5N  
rewrite ^/(.*) https://$server_name$1 permanent; #跳转到Https 3\j{*f$J  
} KV v0bE  
重写依旧不同版本可能如下 )`<- c2  
rewrite ^/(.*)$ https://domain.com/$1 permanent;
6EfGJq  
或者 Q}.zE+  
rewrite ^ https://domain.com$request_uri? permanent; cyu)YxT  
b~uz\%'3  
现在nginx新版本已经换了种写法,上面这些已经不再推荐。现在网上可能还有很多文章写的是第一种。 \i%h/Ao  
下面是nginx http页面重定向到https页面最新支持的写法: 7v\K,P8  
server { 46^LPC"x  
listen    80; l;_zX N   
server_name domain.com; ?+EN.P[;3  
return    301 https://$server_name$request_uri; qo{2 CYG\+  
}
0=  ]RG  
server { H3< `  
listen    443 ssl; t<'-?B2g  
server_name domain.com;
s+m,ASj  
} GR&T Z   
但是我的nginx/1.10.0好像跑不起来,也许不支持这种写法吧... 57:Wh= x  
下面是基于http转https的完整配置:
k8]=5C?k  
server OFS` ?>  
{ ,":l >0P[  
#listen 80; cQj{[Wt4  
listen 443; 4E&= qC]S  
ssl on; Id->F0x0  
server_name domain.com; //你的域名 K&{*sa r  
index index.html index.htm index.php default.html default.htm default.php; JStT"*4j  
ssl_certificate /usr/local/nginx/cert/user.medsci-tech.com/214020580630662.pem; Mq7d*Bgb  
ssl_certificate_key /usr/local/nginx/cert/user.medsci-tech.com/214020580630662.key; JvFU7`4@  
ssl_session_timeout 5m; 4BSSJ@ z  
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; !Pmv  
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; \qPgQsy4  
ssl_prefer_server_ciphers on;
enu",wC3  
root /home/wwwroot/web/public;//项目根目录 <{\UE~  
include laravel.conf; _J}vPm  
#error_page 404 /404.html; /?b<}am  
include enable-php.conf;
Q^q G=  
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ %;,D:Tv=&  
{ *GsrG*OM*D  
expires 30d; g+ `Ie'o<  
}
],%}}UN  
location ~ .*\.(js|css)?$ +nKxSjqI  
{ ku,Y-  
expires 12h; D]+tr%  
}
7M: 0%n$  
} [!>2[bbl  
server { Rk fr4  
listen 80; whP>'9t.w  
server_name domain.com; F0Xv84:O  
rewrite ^/(.*) https://$server_name$request_uri? permanent; >VqMSe_v  
}
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个