首頁  >  文章  >  運維  >  如何利用SSL設定Nginx反向代理

如何利用SSL設定Nginx反向代理

PHPz
PHPz轉載
2023-05-13 15:19:151491瀏覽

先決條件

1.後端伺服器:為了本教學的目的,我們使用在連接埠8080的localhost上執行的tomcat伺服器

#注意: - 當您開始代理請求時,請確保應用程式伺服器已啟動。

2.ssl憑證:我們還需要在伺服器上設定ssl憑證。我們可以使用 let's encrypt的加密證書,你可以用這裡提到的程式得到一個。但是對於本教程,我們將使用自簽名證書,可以透過從終端運行以下命令來創建,

$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/certs/cert.key -out /etc/nginx/certs/cert.crt

使用ssl配置nginx反向代理的下一步將是nginx安裝,

安裝nginx

ubuntu

#nginx可用於預設的ubuntu儲存庫。這麼簡單,使用以下命令安裝它,

$ sudo apt-get update && sudo apt-get install nginx

現在啟動服務並啟用它以進行啟動,

# systemctl start nginx 
 
# systemctl enable nginx

現在檢查nginx安裝,我們可以打開web瀏覽器並輸入系統ip作為url以取得預設的nginx網頁,這確認nginx工作正常。

使用ssl配置nginx反向代理程式

現在我們擁有了使用ssl配置nginx反向代理程式所需的所有東西。我們現在需要在nginx中進行配置,我們將使用預設的nginx配置文件,即/etc/nginx/conf.d/default.conf.

假設這是我們第一次對配置進行任何更改,打開文件並刪除或註釋所有舊文件內容,然後將以下條目放入文件中。

vi /etc/nginx/conf.d/default.conf

server { 
 
listen 80; 
 
return 301 https://$host$request_uri; 
 
} 
 
 
 
 
server { 
 
listen 443; 
 
server_name linuxtechlab.com; 
 
ssl_certificate /etc/nginx/ssl/cert.crt; 
 
 
 
 
ssl_certificate_key /etc/nginx/ssl/cert.key; 
 
ssl on; 
 
ssl_session_cache builtin:1000 shared:ssl:10m; 
 
ssl_protocols tlsv1 tlsv1.1 tlsv1.2; 
 
ssl_ciphers high:!anull:!enull:!export:!camellia:!des:!md5:!psk:!rc4; 
 
ssl_prefer_server_ciphers on; 
 
access_log /var/log/nginx/access.log; 
 
 
 
 
location / { 
 
proxy_set_header host $host; 
 
proxy_set_header x-real-ip $remote_addr; 
 
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; 
 
proxy_set_header x-forwarded-proto $scheme; 
 
proxy_pass http://localhost:8080; 
 
proxy_read_timeout 90; 
 
proxy_redirect http://localhost:8080 https://linuxtechlab.com; 
 
} 
 
}

完成所有變更後,儲存檔案並退出。在我們重新啟動nginx服務以實現所做的更改之前,我們將逐節討論我們所做的配置。

第1節

server { 
listen 80; 
return 301 https://$host$request_uri; 
}

在這裡,我們告訴我們要聽取對連接埠80的任何請求,然後將其重定向到https。

第2節

listen 443; 
 
server_name linuxtechlab.com; 
 
ssl_certificate /etc/nginx/ssl/cert.crt; 
 
ssl_certificate_key /etc/nginx/ssl/cert.key; 
 
ssl on; 
 
ssl_session_cache builtin:1000 shared:ssl:10m; 
 
ssl_protocols tlsv1 tlsv1.1 tlsv1.2; 
 
ssl_ciphers high:!anull:!enull:!export:!camellia:!des:!md5:!psk:!rc4; 
 
ssl_prefer_server_ciphers on;

現在這些是我們正在使用的一些預設的nginx ssl選項,它們告訴nginx web伺服器支援哪種協定版本,ssl密碼。

第3節

location / { 
 
proxy_set_header host $host; 
 
proxy_set_header x-real-ip $remote_addr; 
 
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; 
 
proxy_set_header x-forwarded-proto $scheme; 
 
proxy_pass http://localhost:8080; 
 
proxy_read_timeout 90; 
 
proxy_redirect http://localhost:8080 https://linuxtechlab.com; 
 
}

現在,本節介紹代理以及傳入請求進入後的位置。現在我們已經討論了所有配置,我們將檢查然後重新啟動nginx服務。

要檢查nginx,請執行以下命令

# nginx -t

一旦我們所有設定檔都ok,我們將重新啟動nginx服務

# systemctl restart nginx

就是這樣,我們的ssl nginx反向代理現已準備就緒。現在要測試設置,您所要做的就是打開web瀏覽器並輸入url。我們現在應該重定向到apache tomcat網頁。

以上是如何利用SSL設定Nginx反向代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除