一
關于nginx
nginx是一款高性能的開源Web服務器軟件,也可以用于反向代理、負載均衡等,并且具有高性能、低內存消耗等優點。
本文我們主要講解關于nginx的反向代理功能,并在服務器上實現如下功能:
? 反向代理其他后臺服務
? 通過域名訪問后臺服務
前期準備:
? 一臺云服務器(ubuntu20.04 LTS)
? 一個可用的域名
注意:
①本文中因服務器上已經提前安裝了nginx,所以第二章(安裝nginx)中使用的系統是一個全新的本地ubuntu系統來演示,因此其ip地址為局域網地址。
② 第三章(nginx反向代理配置)中,使用的系統為云服務器ubuntu系統,其ip地址為公網地址,并且已經使用了域名進行了解析。
③若使用的是CentOS等其他系統,則部分管理命令和操作命令可能不相同,但nginx配置和使用邏輯基本相同。
二
安裝nginx
1.更新系統軟件包
sudo apt update
2.安裝nginx
sudo apt install nginx -y
-y選項代表安裝過程中的詢問默認為yes
安裝完成后,可以檢查系統中是否多了兩個目錄文件,/etc/nginx/和/var/www/html,其中:
/etc/nginx/:包含 NGINX 的配置文件,主要用于配置 nginx 服務器的行為,包括監聽的端口、反向代理設置、SSL/TLS 配置等。
/var/www/html:nginx默認的網站根目錄,這里存放了HTML頁面、JS文件等資源。
在本文中,我們主要講解nginx的反向代理功能,所以/var/www/html作為nginx的web服務器功能目錄,我們暫時不進行任何修改。
3.驗證nginx是否安裝成功
啟動nginx服務,并添加為系統啟動時自啟動:
sudo systemctl start nginx
sudo systemctl enable nginx
查看nginx服務當前狀態:
sudo systemctl status nginx
通過檢查狀態可以看出當前nginx服務狀態為正在running運行,并且已經enabled添加到了開機自啟動,通過下方輸出的日志也可以看出已經啟動成功。
在瀏覽器使用服務器ip地址進行訪問ngxin的web服務器功能:
192.168.3.168:80
或
192.168.3.168 #默認訪問80端口
至此可以證明nginx已經安裝成功。
三
nginx反向代理配置
在反向代理功能中,需要了解nginx配置文件中/etc/nginx/sites-available和/etc/nginx/sites-enabled兩個目錄:
sites-available:這個目錄包含了所有可用的虛擬主機配置文件。每個文件通常對應一個虛擬主機(一個網站)的配置。在這里你可以存放所有已經創建的虛擬主機配置文件,無論是否啟用。
sites-enabled:這個目錄包含了當前啟用的虛擬主機配置文件的符號鏈接。在 nginx啟動時,它只會讀取 sites-enabled 目錄中的配置文件。
通俗來講:虛擬主機是指同一個物理服務器上運行的不同網站或服務,available目錄存放了我們想要代理的虛擬主機的配置文件,但這些配置文件是否啟用取決于我們是否將其鏈接到了enabled目錄中,因為nginx服務只會讀取enabled目錄來進行設置,這種做法使得添加、編輯和禁用虛擬主機配置變得更加簡單和安全。
本次演示將使用nginx為emqx的管理控制臺服務(EMQX Dashboard,端口18083)完成反向代理功能。(若沒有emqx服務,也可以用于其他任何應用程序和服務,道理相同)
(1)云服務器上已經安裝并啟動了emqx服務,并且通過ip+端口能夠正常訪問EMQX管理控制臺
(2)服務器ip已綁定域名,且域名已完成了DNS解析
這里需要用到二級域名,所以對域名直接進行了二級域名泛解析。
(3)新增虛擬主機配置文件
例如,這里我們使用的域名為keeshow.cn,我們想將emqx管理控制臺服務通過mqtt.keeshow.cn來訪問。
新增/etc/nginx/sites-available/mqtt.keeshow.cn配置文件,配置內容為:
server {
listen 80;
listen [::]:80;
server_name mqtt.keeshow.cn;
client_max_body_size 1024m;
location / {
proxy_pass http://127.0.0.1:18083;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server塊:定義了一個虛擬主機,用于處理特定的域名和端口的請求。
listen:80:監聽 IPv4 地址上的端口 80(HTTP 默認端口),[::]:80:監聽 IPv6 地址上的端口 80。這樣可以同時處理 IPv4 和 IPv6 的 HTTP 請求。
server_name:指定該虛擬主機響應的域名。只有請求的 Host 頭匹配 mqtt.keeshow.cn 時,才會使用這個 server 塊。
client_max_body_size:設置客戶端請求體的最大允許大小為 1024MB。這在需要上傳大文件時有用,防止請求因為過大被拒絕。
location 塊:定義了對根路徑(/)的請求的處理方式。
proxy_pass:將所有到達 mqtt.keeshow.cn 的請求代理到本地的 127.0.0.1:18083。代表 nginx接收到請求后,將它轉發給運行在本地端口 18083 的 EMQX Dashboard。
proxy_set_header:請求頭設置相關。
HOST $host:將客戶端請求的 Host 頭傳遞給后端服務器。$host 變量代表客戶端請求的主機名。
X-Forwarded-Proto $scheme:將客戶端使用的協議(HTTP或 HTTPS)傳遞給后端服務器。$scheme 變量表示請求的協議。
X-Real-IP $remote_addr:將客戶端的真實IP地址傳遞給后端服務器。$remote_addr 變量表示客戶端的IP地址。
X-Forwarded-For $proxy_add_x_forwarded_for:將客戶端的原始 IP 地址和所有代理的 IP 地址傳遞給后端服務器。$proxy_add_x_forwarded_for 變量包含客戶端的 IP 地址以及所有代理服務器的 IP 地址。
創建完成后,查看sites-available目錄可以看到新增的配置文件,同理,如果需要新增其他配置文件,也需要創建在該目錄中。
(4)鏈接虛擬主機配置文件
鏈接sites-available目錄中的配置文件鏈接到sites-enabled目錄中:
sudo ln -s /etc/nginx/sites-available/mqtt.keeshow.cn /etc/nginx/sites-enabled/
該鏈接會在sites-enabled目錄中生成一個軟連接,并指向了sites-available目錄中的原始配置文件,同理,我們也能在這里看到其他已代理服務的鏈接,他們都來自于sites-available目錄。
完成配置后,檢查配置有無語法錯誤:
sudo nginx -t
(5)重啟nginx
#重新加載nginx配置文件
sudo systemctl reload nginx
#重新啟動nginx
sudo systemctl restart nginx
(6)通過域名訪問
完成以上步驟后,代表已經配置好了nginx的反向代理,再通過域名訪問EMQX管理控制臺服務,能夠正常訪問。
四
總結
nginx作為反向代理服務器,它的反向代理功能可以幫助將客戶端的請求轉發到后端的多個服務器或服務上,并將后端服務器的響應返回給客戶端。
當使用域名進行反向代理時,客戶端只能看到域名,而無法直接看到后端服務器的真實IP地址。這樣可以隱藏后端服務器的真實IP地址,增強了安全性和隱私保護。
億佰特無線通信模塊
億佰特無線模塊產品涵蓋LoRa、Wi-Fi、藍牙、ZigBee、4G/5G/NB/GPRS、LoRaWAN、CAN等多種通信制式,多種工作頻段可選,自主研發,提供全方位技術支持。模塊已廣泛應用于服務機器人、工控醫療、智能家居、安防報警、環境監測、新能源等領域。
-
Web
+關注
關注
2文章
1263瀏覽量
69467 -
服務器
+關注
關注
12文章
9160瀏覽量
85421 -
nginx
+關注
關注
0文章
149瀏覽量
12174
發布評論請先 登錄
相關推薦
評論