Nginx下將http改為https的操作步驟
將服務(wù)從 HTTP 變?yōu)?nbsp;HTTPS,需要進(jìn)行 SSL 證書的配置。需要完成一下步驟:
- 獲取
SSL證書 - 安裝
SSL證書 - 配置 Nginx 支持
HTTPS - 重啟 Nginx
HTTP到HTTPS的重定向(可選)
1. 獲取 SSL 證書(自簽名證書)
對(duì)于 SSL/TLS 證書,一般來說,它們是基于 域名 進(jìn)行頒發(fā)的,而不是 IP地址。這是因?yàn)?nbsp;SSL/TLS 證書是用來驗(yàn)證服務(wù)器身份和提供一個(gè)安全的連接通道的,它們需要關(guān)聯(lián)到一個(gè)被認(rèn)可的域名以確保服務(wù)器的真實(shí)性。
如果你沒有 域名,但是你的應(yīng)用又需要使用 HTTPS,那么以下幾種方式或許可以考慮:
- 購買一個(gè)域名:
域名現(xiàn)在相當(dāng)便宜,你可以購買一個(gè),并將其解析到你的 IP 地址。 - 自簽名證書:
可以創(chuàng)建自己的自簽名證書。但是,用戶的瀏覽器會(huì)顯示一個(gè)警告,提示他們證書不受信任。這可能不適合面向公眾的應(yīng)用程序,但對(duì)于測(cè)試或內(nèi)部使用的服務(wù)來說,這是一個(gè)可行的選擇。 - 使用 CloudFlare
CloudFlare 是一個(gè)內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)和 DNS 提供商,它提供免費(fèi)的SSL證書,即使你沒有域名也可以使用。但是,這需要將你的流量通過他們的網(wǎng)絡(luò),可能并不適合所有應(yīng)用。
1.1. 安裝 openssl
// 更新 apt-get 下載源節(jié)點(diǎn) sudo apt-get update // 查看當(dāng)前 apt-get 下載源節(jié)點(diǎn)里 libssl-dev 可下載安裝的所有版本和默認(rèn)的最合適的版本 sudo apt-cache policy libssl-dev // 下載并默認(rèn)安裝 libssl-dev(默認(rèn)的版本) sudo apt-get install libssl-dev // 如果要指定安裝某個(gè)版本 //sudo apt-get install libssl-dev=版本號(hào)
1.2. 自簽名證書
使用 OpenSSL 工具來創(chuàng)建自己的自簽名證書
- 生成私鑰
打開命令行,然后輸入以下命令來生成一個(gè)新的 RSA 私鑰:openssl genrsa -out server.key 2048,將在當(dāng)前目錄下生成一個(gè)名為server.key的 2048 位私鑰文件。 - 生成證書簽名請(qǐng)求(CSR)
使用此命令生成 CSR(Certificate Signing Request):openssl req -new -key server.key -out server.csr,會(huì)提示輸入很多東西,一直按 enter 即可 - 生成自簽名證書
最后,使用以下命令生成自簽名證書:openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt,這將生成一個(gè)有效期為一年的自簽名證書 server.crt。
1.3. 嘗試在 flask 應(yīng)用中使用
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Hello World"
if __name__ == "__main__":
app.run(ssl_context=('server.crt', 'server.key'), host='0.0.0.0', port=8080)
#app.run(host='0.0.0.0', port=8080)這樣,F(xiàn)lask 服務(wù)器就會(huì)在 HTTPS 上運(yùn)行了。但是,請(qǐng)注意,因?yàn)槭褂玫氖亲院灻C書,所以瀏覽器將警告用戶這個(gè)連接不安全(因?yàn)樽C書不是由受信任的證書頒發(fā)機(jī)構(gòu)簽署的)。對(duì)于公開服務(wù),應(yīng)該考慮獲得一個(gè)由公認(rèn)的 CA 簽署的證書。
直接在 flask 中使用 ssl 證書的示意圖:


2. 安裝 SSL 證書
將上面生成的 SSL 證書文件放置到位于 /etc/nginx/ssl/ 目錄中。確保已經(jīng)擁有了服務(wù)器私鑰(server.key)和證書文件(server.crt 或 server.crt)。
3. 配置 Nginx 支持 HTTPS
3.1. 打開 Nginx 配置文件
Nginx 的配置文件通常位于 /etc/nginx/ 目錄下,具體取決于你的系統(tǒng)和 Nginx 安裝方式。大部分情況下,站點(diǎn)特定的配置在 /etc/nginx/sites-available/ 中。
3.2. 修改或增加一個(gè)server塊
在 /etc/nginx/sites-available/default 配置文件中,將文件中的內(nèi)容全部替換為下面的 server 模塊(或者新建一個(gè)使用 SSL 的 server 塊),內(nèi)容如下:
server {
listen 443 ssl;
server_name _;
# server_name your-domain.com; # 沒有域名則直接寫一個(gè)下劃線即可
ssl_certificate /etc/nginx/ssl/server.crt; # 修改為證書路徑
ssl_certificate_key /etc/nginx/ssl/server.key; # 修改為私鑰路徑
location / {
proxy_pass http://127.0.0.1:8080; # 修改為 http 服務(wù)地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}- 替換 your-domain.com 為真實(shí)的域名,沒有域名則直接寫一個(gè)下劃線(_)即可。
- listen 443 ssl 告訴 Nginx 在 443 端口上監(jiān)聽 SSL 連接。
- ssl_certificate 和 ssl_certificate_key 指令分別指向你的證書文件和私鑰文件的實(shí)際路徑。
4. 重啟 Nginx
保存并關(guān)閉配置文件,然后運(yùn)行以下命令來檢查新的配置是否有語法錯(cuò)誤:
sudo nginx -t
如果這個(gè)命令沒有報(bào)錯(cuò),就可以安全地重啟 Nginx:
sudo systemctl restart nginx
nginx 重啟成功后,將可以在瀏覽器上通過 https 訪問服務(wù)器應(yīng)用了。由于使用的是自簽名證書,用戶的瀏覽器將顯示一個(gè)警告,提示他們此證書不受信任。這對(duì)于測(cè)試和開發(fā)環(huán)境可能沒問題,但是如果計(jì)劃在生產(chǎn)環(huán)境中使用 SSL,應(yīng)該考慮從一個(gè)可信的證書頒發(fā)機(jī)構(gòu)獲取一個(gè)證書。
使用 nginx 作為反向代理后,使用 ssl 證書的示意圖:


5. HTTP 到 HTTPS 的重定向(可選)
如果希望所有的 HTTP 流量都自動(dòng)跳轉(zhuǎn)到 HTTPS,可以在 Nginx 配置中添加以下內(nèi)容:
server {
listen 80;
server_name your-domain.com;
return 301 https://$host$request_uri;
}這段配置會(huì)捕獲所有到端口 80(HTTP) 的請(qǐng)求,并將它們重定向到相同地址的 HTTPS 版本。
到此這篇關(guān)于Nginx下將http改為https的操作步驟的文章就介紹到這了,更多相關(guān)Nginx將http改為https內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx常用配置以及代理轉(zhuǎn)發(fā)操作詳解
這篇文章主要給大家介紹了關(guān)于Nginx常用配置以及代理轉(zhuǎn)發(fā)的相關(guān)資料,nginx一般被用來做反向代理,將請(qǐng)求轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器上,比如tomcat的應(yīng)用,需要的朋友可以參考下2023-09-09
Nginx報(bào)錯(cuò)"Too many open files"問題的深度解析
在高并發(fā)場(chǎng)景下,Nginx作為Web服務(wù)器或反向代理時(shí),常常會(huì)遇到“Too many open files”錯(cuò)誤,本文將從問題原理,解決方案,配置優(yōu)化及驗(yàn)證方法等方面,詳細(xì)解析如何解決這一問題,希望對(duì)大家有所幫助2025-06-06
nginx實(shí)現(xiàn)透轉(zhuǎn)的方法步驟
本文主要介紹了nginx實(shí)現(xiàn)透轉(zhuǎn)的方法步驟,實(shí)現(xiàn)HTTP與HTTPS請(qǐng)求的客戶端IP地址透?jìng)?文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05
nginx?搭建http-flv(rtmp)流媒體的方法步驟
本文主要介紹了nginx?搭建http-flv(rtmp)流媒體的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>2023-06-06
Nginx 配置 HTTPS 與 WSS 完整指南(最新推薦)
本教程將手把手教你如何為網(wǎng)站配置 HTTPS 加密訪問,并通過反向代理實(shí)現(xiàn)安全的 WebSocket(WSS)通信,感興趣的朋友跟隨小編一起看看吧2025-05-05
使用nginx動(dòng)態(tài)轉(zhuǎn)換圖片大小生成縮略圖
這篇文章主要介紹了使用nginx動(dòng)態(tài)轉(zhuǎn)換圖片大小生成縮略圖,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Nginx路由器匹配規(guī)則的實(shí)現(xiàn)示例
本文主要介紹了Nginx路由器匹配規(guī)則的實(shí)現(xiàn)示例,涵蓋精確匹配、正則匹配等,通過合理配置解決沖突,優(yōu)化反向代理與靜態(tài)資源處理,提升性能與穩(wěn)定性,感興趣的可以了解一下2025-05-05
Nginx?部署及配置詳細(xì)步驟(附詳細(xì)代碼)
Nginx是一個(gè)web服務(wù)器也可以用來做負(fù)載均衡及反向代理使用,目前使用最多的就是負(fù)載均衡,這篇文章主要介紹了Nginx部署及配置的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-11-11

