反向代理是一個伺服器,它接收通過Web發出的請求,即http和https,然後將它們發送到後端伺服器(或伺服器)。後端伺服器可以是單個或一組應用伺服器 ,如Tomcat,wildfly或Jenkins等,或者甚至可以是其他Web伺服器,如Apache等。 我們已經討論過如何使用Nginx配置簡單的h ...
反向代理是一個伺服器,它接收通過Web發出的請求,即http和https,然後將它們發送到後端伺服器(或伺服器)。後端伺服器可以是單個或一組應用伺服器,如Tomcat,wildfly或Jenkins等,或者甚至可以是其他Web伺服器,如Apache等。
我們已經討論過如何使用Nginx配置簡單的http反向代理。在本教程中,我們將討論如何使用SSL配置Nginx反向代理。因此,讓我們從使用SSL配置Nginx反向代理的過程開始
先決條件
- 後端伺服器:為了本教程的目的,我們使用在埠8080的localhost上運行的tomcat伺服器
註意: - 當您開始代理請求時,請確保應用程式伺服器已啟動。
- 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反向代理的教程,請使用下麵的註釋框發送有關本教程的任何問題或疑問。