nginx啓用https訪問

什麼是https?

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

配置過程

首先須要申請一個證書,能夠申請一個免費的。nginx

如何申請瀏覽器

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

而後選免費版的,通常免費版有效期是一年,而後填各類信息,提交審覈就行了,審覈很快的,一個小時工做時間左右吧服務器

審覈成功後就能夠在證書列表裏下載證書了,下載出來是一個壓縮包,裏面有各類版本的證書:Apache、IIS、Nginx、Tomcat;session

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

先確認nginx安裝時已編譯http_ssl模塊,也就是執行 nginx -V 命令查看是否存在--with-http_ssl_module。通常都會有的,若是沒有,則須要從新編譯nginx將該模塊加入。網站

修改Nginx配置加密

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

打開後有兩個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

到這裏應該就能夠了,本身多實踐多調研吧,每一個人狀況可能不同,但願對你有幫助!

相關文章
相關標籤/搜索