日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Nginx配置Https零基礎(chǔ)教程

安裝 nginx

成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(成都創(chuàng)新互聯(lián)).為客戶提供專業(yè)的綿陽主機托管,四川各地服務(wù)器托管,綿陽主機托管、多線服務(wù)器托管.托管咨詢專線:13518219792

有可能你當(dāng)前已經(jīng)通過 apt-get yum 等命令安裝了,但是可能不支持 https http2 ipv6 等功能。

查看當(dāng)前版本配置

我們可以通過 nginx -V 命令來查看版本以及支持的配置。

下面這以 ubuntu 為例,卸載安裝 nginx

卸載

 
 
 
 
  1. # 移除 nginx 
  2. $ apt-get --purge remove nginx 
  3. # 查詢 nginx 依賴的包,會列出來 
  4. $ dpkg --get-selections|grep nginx 
  5. # 移除上面列出的包,例如 nginx-common 
  6. $ apt-get --purge remove nginx-common
  7. # 也可以執(zhí)行 autoremove ,會自動刪除不需要的包 
  8. $ apt-get autoremove 
  9. # 查詢 nginx 相關(guān)的文件,刪掉就可以了 
  10. $ sudo find / -name nginx*

安裝

 
 
 
 
  1. 安裝依賴庫 
  2. # gcc g++ 
  3. apt-get install build-essential 
  4. apt-get install libtool 
  5. # pcre 
  6. sudo apt-get install libpcre3 libpcre3-dev 
  7. # zlib 
  8. apt-get install zlib1g-dev 
  9. # ssl 
  10. apt-get install openssl 
  11. apt-get install libssl-dev

安裝 nginx

到 nginx download 上找到最新的nginx 版本

 
 
 
 
  1. # 下載 
  2. $ wget https://nginx.org/download/nginx-1.17.8.tar.gz 
  3. # 解壓 
  4. $ tar -zxvf nginx-1.17.8.tar.gz 
  5. # 進入目錄 
  6. $ cd nginx-1.17.8 
  7. # 配置,這里可能會報錯,缺少啥就去安裝啥 
  8. $ ./configure --prefix=/usr/local/nginx \ 
  9. --with-http_gzip_static_module \ 
  10. --with-http_v2_module \ 
  11. --with-pcre \ 
  12. --with-http_ssl_module

# 編譯,這里可能會報錯,缺少啥就去安裝啥

 
 
 
 
  1. $ make

# 安裝

 
 
 
 
  1. $ make install

# 通過軟連接,這樣就可以直接使用 nginx 執(zhí)行

 
 
 
 
  1. sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

SSL 證書

SSL 證書通常需要購買,也有免費的,通過第三方 SSL 證書機構(gòu)頒發(fā)。你也可以在云服務(wù)商上購買,但是一般免費的 ssl 證書只能支持單個域名。

這里推薦 Let’s Encrypt 機構(gòu),然后使用 acme.sh 從 letsencrypt 生成免費的證書,且可以生成泛域名證書。

參考 acme.sh 中文 wiki 、使用 acme.sh 部署 Let's Encrypt 通過阿里云 DNS 驗證方式實現(xiàn)泛域名 HTTPS

上面的兩篇文章講的很詳細了,不再贅述。

PS:

  •  建議使用 DNS 驗證
  •  --dns dns_ali  是根據(jù)不同服務(wù)商來的,dns_ali 就是指阿里云。其他服務(wù)商的參考 How to use DNS API 。
  •  證書生成后,默認在 ~/.acme.sh/ 目錄下,這里的文件是內(nèi)部使用的,需要使用 --installcert 命令指定到目標位置

這里將證書放到了 nginx 的 conf 目錄下。.../conf/ssl/...

配置 http

http 基礎(chǔ)配置

http 的配置很簡單,配置如下,我們先讓網(wǎng)站可以訪問起來。

 
 
 
 
  1. server { 
  2.     listen  80; 
  3.     server_name     wangsijie.top www.wangsijie.top; 
  4.     location / { 
  5.         root /var/www/main; 
  6.         index index.html; 
  7.     }
  8. }

使用 http://訪問,就會如下顯示

配置 https

Https 基礎(chǔ)配置

 
 
 
 
  1. server { 
  2.     listen                  443 ssl; 
  3.     server_name             wangsijie.top www.wangsijie.top; 
  4.     # 證書文件,這里使用了 fullchain.cer 通過 acme.sh 生成的泛域名證書 
  5.     ssl_certificate         ssl/fullchain.cer; 
  6.     # 私鑰文件 
  7.     ssl_certificate_key     ssl/wangsijie.top.key; 
  8.     location / { 
  9.         root /var/www/main; 
  10.         index index.html; 
  11.   } 
  12. }

重啟后,以 https:// 開頭訪問你的網(wǎng)站,就會發(fā)現(xiàn)

修改 http 配置

但是用 http:// 訪問,仍舊顯示連接不安全,我們需要修改配置,當(dāng)訪問 http 時會重定向到 https 如下

 
 
 
 
  1. server { 
  2.     listen  80; 
  3.     server_name     wangsijie.top www.wangsijie.top; 
  4.     return  301 https://$server_name$request_uri; 
  5. }

這時再用 http:// 訪問,就會重定向到 https://

PS:

網(wǎng)上也有許多使用 rewrite 來重定向,但是 return 指令簡單高效,建議盡量使用 return

完整配置

 
 
 
 
  1. server { 
  2.     listen  80; 
  3.     server_name     wangsijie.top www.wangsijie.top; 
  4.     return  301 https://$server_name$request_uri; 
  5. server { 
  6.     listen                  443 ssl; 
  7.     server_name             wangsijie.top www.wangsijie.top; 
  8.     ssl_certificate         ssl/fullchain.cer; 
  9.     ssl_certificate_key     ssl/wangsijie.top.key; 
  10.     location / { 
  11.         root /var/www/main; 
  12.         index index.html; 
  13.   } 
  14. }

混合配置

 
 
 
 
  1. server { 
  2.     listen          80; 
  3.     listen                  443 ssl; 
  4.     server_name             wangsijie.top www.wangsijie.top; 
  5.     ssl_certificate         ssl/fullchain.cer;
  6.      ssl_certificate_key     ssl/wangsijie.top.key; 
  7.     location / { 
  8.         root /var/www/main; 
  9.         index index.html; 
  10.   } 
  11. }

https 安全

加密套件

https 默認采用 SHA-1 算法,非常脆弱。我們可以使用迪菲-赫爾曼密鑰交換。

我們在 /conf/ssl 目錄下生成 dhparam.pem 文件

 
 
 
 
  1. openssl dhparam -out dhparam.pem 2048

下面的指令 ssl_protocols 和 ssl_ciphers 是用來限制連接只包含 SSL/TLS 的加強版本和算法。

 
 
 
 
  1. # 優(yōu)先采取服務(wù)器算法 
  2. ssl_prefer_server_ciphers on; 
  3. # 使用 DH 文件 
  4. ssl_dhparam       ssl/dhparam.pem;
  5. # 協(xié)議版本 
  6. ssl_protocols           TLSv1 TLSv1.1 TLSv1.2; 
  7. # 定義算法 
  8. ssl_ciphers      EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; 
  9. 復(fù)制代碼 
  10. 安全的響應(yīng)頭# 啟用 HSTS 。允許 https 網(wǎng)站要求瀏覽器總是通過 https 來訪問 
  11. add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always; 
  12. # 減少點擊劫持 
  13. add_header X-Frame-Options DENY; 
  14. # 禁止服務(wù)器自動解析資源類型 
  15. add_header X-Content-Type-Options nosniff; 
  16. # 防XSS攻擊 
  17. add_header X-Xss-Protection 1; 
  18. 復(fù)制代碼 
  19. 服務(wù)器優(yōu)化# 配置共享會話緩存大小 
  20. ssl_session_cache   shared:SSL:10m; 
  21. # 配置會話超時時間 
  22. ssl_session_timeout 10m; 
  23. 復(fù)制代碼 
  24. http2 配置 
  25. http2 配置很簡單,只要后面增加 http2。 
  26. 下面 [::]: 表示 ipv6 的配置,不需要可以不加那一行l(wèi)isten  80; 
  27. listen  [::]:80; 
  28. listen  443 ssl http2; 
  29. listen  [::]:443 ssl http2;

重啟 nginx 后,你可以在這個網(wǎng)站上 tools.keycdn.com/http2-test 測試http2有沒有配置成功。

最后

完整配置

 
 
 
 
  1. server { 
  2.     listen                  80; 
  3.     listen                  [::]:80; 
  4.     listen                  443 ssl http2; 
  5.     listen                  [::]:443 ssl http2; 
  6.     server_name             wangsijie.top www.wangsijie.top; 
  7.     ssl_certificate         ssl/fullchain.cer; 
  8.     ssl_certificate_key     ssl/wangsijie.top.key; 
  9.     ssl_session_cache       shared:SSL:10m; 
  10.     ssl_session_timeout     10m; 
  11.     ssl_prefer_server_ciphers on; 
  12.     ssl_dhparam       ssl/dhparam.pem; 
  13.     ssl_protocols           TLSv1 TLSv1.1 TLSv1.2; 
  14.     ssl_ciphers     EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; 
  15.     add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; 
  16.     add_header X-Frame-Options DENY; 
  17.     add_header X-Content-Type-Options nosniff; 
  18.     add_header X-Xss-Protection 1; 
  19.     location / { 
  20.         root /var/www/main; 
  21.         index index.html; 
  22.     } 
  23. }

配置文件優(yōu)化

為了讓更多的二級域名支持上面的功能,每個 server 都這么寫太過于繁瑣。

可以將 listen 443 、ssl、add_header 相關(guān)的單獨寫在一個文件上,然后使用 inculde 指令。

如下:其他的配置都放在了conf.d/https-base.conf中

 
 
 
 
  1. server { 
  2.     listen                  8099; 
  3.     listen                  [::]:8099; 
  4.     server_name             test.wangsijie.top; 
  5.     include                 conf.d/https-base.conf; 
  6.     location / { 
  7.         root /var/www/test; 
  8.         index index.html; 
  9.     } 

當(dāng)前文章:Nginx配置Https零基礎(chǔ)教程
鏈接分享:http://www.5511xx.com/article/djogjgd.html