Nginx 配置SSL及Http跳轉(zhuǎn)到Https

2018-11-10 15:09 更新

隨著微信小程序和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;

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號