隨著微信小程序和appstore對ssl安全的需求,越來越多的網(wǎng)站和app需要支持SSL功能,需要開啟https的方式來打開網(wǎng)站或傳輸數(shù)據(jù)。
ssl證書網(wǎng)上可以找到收費和免費的申請,nginx配置如下:
Nginx配置SSL并把Http跳轉(zhuǎn)到Https,需要修改Nginx.conf配置文件:
#原80端口做301轉(zhuǎn)跳 server { listen 80; server_name w3cschool.cn o2fo.com; return 301 https://www.zhimiyun.com$request_uri; #跳轉(zhuǎn)到Https }
#配置ssl證書和開啟ssl功能 server { listen 443; server_name o2fo.com; root wwwroot; index index.html index.htm; ssl on; ssl_certificate /usr/ssl/ca.pem; #證書地址 ssl_certificate_key /usr/ssl/ca.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; error_page 497 "https://$host$uri?$args"; #這是跳轉(zhuǎn)Http請求到Https location / { ... } }
也就是再添加一個虛擬機server,80端口一個,443端口一個。
但是有些程序只會給你往端口上轉(zhuǎn)發(fā),不會自動修正http為https,這樣的程序還不少,例如phpmyadmin:
遇到這樣的程序我們需要修改Nginx.conf配置文件,在443的server的fastcgi字段中添加一個語句:
fastcgi_param HTTPS on; #attention!#
例如:location ~ .*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param HTTPS on; #attention!#
include fcgi.conf;
}
注釋:把http重定向到https使用了nginx的重定向命令。那么應(yīng)該如何寫重定向?之前老版本的nginx可能使用了以下類似的格式。
rewrite ^/(.*)$ http://domain.com/$1 permanent;
或者
rewrite ^ http://domain.com$request_uri? permanent;
現(xiàn)在nginx新版本已經(jīng)換了種寫法,上面這些已經(jīng)不再推薦?,F(xiàn)在網(wǎng)上可能還有很多文章寫的是第一種。
新的寫法比較推薦方式是:return 301 http://domain.com$request_uri;
更多建議: