nginx啟用https訪問


什么是https?

https 全稱:Hyper Text Transfer Protocol over Secure Socket Layer,是http的安全版。即http下加入SSL協議層,因此https的安全基礎就是SSL,所以加密內容需要SSL。

配置過程

首先需要申請一個證書,可以申請一個免費的。

如何申請

我是用的騰訊雲,雲產品-》域名與網站-》SSL證書管理

然后選免費版的,一般免費版有效期是一年,然后填各種信息,提交審核就好了,審核很快的,一個小時工作時間左右吧

審核成功后就可以在證書列表里下載證書了,下載出來是一個壓縮包,里面有各種版本的證書:Apache、IIS、Nginx、Tomcat;

我們這里用到的是nginx版本證書,一個公鑰,一個私鑰。將其上傳到服務器目錄,我是傳到了 /etc/pki/nginx 目錄下,記住這個目錄哦,待會配置的時候會用到

先確認nginx安裝時已編譯http_ssl模塊,也就是執行 nginx -V 命令查看是否存在--with-http_ssl_module。一般都會有的,如果沒有,則需要重新編譯nginx將該模塊加入。

修改Nginx配置

打開 Nginx 的默認配置文件 /etc/nginx/nginx.conf ,如何打開和編輯請參考上一篇文章雲服務器搭建 Nginx 靜態網站

打開后有兩個server配置對象

第一個是監聽80端口的,內容請參考如下偽代碼:

server {
        listen       80;
        server_name  你的域名 www.你的域名;
        root         /data/www(你nginx配置的靜態資源目錄);

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

# 將http強制轉https
        location / {
            rewrite (.*) https://www.你的域名$1 permanent; 
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

第二個是監聽443端口的,默認是注釋的,先取消注釋,內容參考如下:

server {
       listen       443 ssl http2 default_server;
       listen       [::]:443 ssl http2 default_server;
       server_name  你的域名 www.你的域名;
       root         /data/www(你nginx配置的靜態資源目錄); 
    ssl_certificate
"/etc/pki/nginx/1_www.dingjianjun.cn_bundle.crt"(你剛才傳到服務器上的證書地址,叫你記住的哦);
    ssl_certificate_key
"/etc/pki/nginx/2_www.dingjianjun.cn.key"(你剛才傳到服務器上的證書地址);
    ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m;
    ssl_ciphers HIGH:
!aNULL:!MD5; ssl_prefer_server_ciphers on;
    # Load configuration files
for the default server block.
    include /etc/nginx/default.d/*
.conf;
    location / {

    }
    error_page 404 /404.html;
    location = /40x.html {

    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {

    }
  }

重啟nginx

nginx -s reload

 

順利的話,你用瀏覽器訪問你的域名,應該就能自動變成https了,就不用看下面的了

----------------------------------------分割線-----------------------------------------------

 

我自己遇到過一個問題,就是重啟失敗吧,好像是80端口被占用了

列出監聽的TCP端口

netstat -ltunp

我是把這個沖突的進程殺死了,可以殺死指定PID的進程,比如我上面那個進程的PID是17220

kill 17220

然后再重啟nginx:

nginx -s reload

到這里應該就可以了,自己多實踐多調研吧,每個人情況可能不一樣,希望對你有幫助!

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM