詳解如何設(shè)置Nginx實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射
在 Nginx 中實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射是一種常見的做法,通常用于將內(nèi)部網(wǎng)絡(luò)中的服務(wù)通過 Nginx 反向代理到外部網(wǎng)絡(luò),使外部用戶能夠訪問這些服務(wù)。下面將詳細(xì)介紹如何設(shè)置 Nginx 實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射。
環(huán)境準(zhǔn)備
假設(shè)你有以下環(huán)境:
- 內(nèi)網(wǎng)服務(wù)運(yùn)行在
192.168.1.10的8080端口 - 外網(wǎng) Nginx 服務(wù)器的 IP 地址為
203.0.113.1 - 需要將外網(wǎng)訪問
203.0.113.1的80端口的請求映射到內(nèi)網(wǎng)的8080端口
1. 安裝 Nginx
如果尚未安裝 Nginx,可以使用以下命令進(jìn)行安裝(以 Ubuntu 為例):
sudo apt update sudo apt install nginx
2. 配置 Nginx 端口映射
編輯 Nginx 配置文件,一般可以在 /etc/nginx/sites-available/default 或 /etc/nginx/nginx.conf 中進(jìn)行配置。
示例配置
在 Nginx 配置文件中添加以下內(nèi)容:
server {
listen 80; # 監(jiān)聽外網(wǎng)請求的 80 端口
server_name 203.0.113.1; # 外網(wǎng)服務(wù)器 IP 或域名
location / { # 所有請求都會匹配這個 location
proxy_pass http://192.168.1.10:8080; # 將請求轉(zhuǎn)發(fā)到內(nèi)網(wǎng)服務(wù)
proxy_set_header Host $host; # 保留原始主機(jī)頭
proxy_set_header X-Real-IP $remote_addr; # 傳遞真實(shí)客戶端 IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 傳遞代理鏈中的所有 IP
proxy_set_header X-Forwarded-Proto $scheme; # 傳遞請求協(xié)議
}
}
3. 說明配置項
- listen 80;: 監(jiān)聽外網(wǎng)請求的 80 端口。
- server_name 203.0.113.1;: 指定處理的外網(wǎng) IP 地址或域名。
- location /: 該配置處理所有傳入請求。
- proxy_pass http://192.168.1.10:8080;: 將請求轉(zhuǎn)發(fā)到內(nèi)網(wǎng)服務(wù)。
- proxy_set_header: 這些指令用于保留和轉(zhuǎn)發(fā)必要的請求頭,以確保后端服務(wù)獲取到原始請求的信息。
4. 測試和重啟 Nginx
在修改配置文件后,使用以下命令測試 Nginx 配置的正確性:
sudo nginx -t
如果沒有錯誤,重啟 Nginx 使配置生效:
sudo systemctl restart nginx
5. 允許外部訪問 Nginx
確保防火墻或安全組允許外部訪問 Nginx 服務(wù)器的 80 端口。以 UFW 為例,可以使用以下命令:
sudo ufw allow 'Nginx Full'
6. 驗證端口映射
在配置完成后,您可以通過 curl 或瀏覽器測試接口是否能夠正常訪問。例如:
curl http://203.0.113.1/
如果一切配置正確,您應(yīng)該能夠通過外網(wǎng)地址訪問內(nèi)網(wǎng)接口。
7. 其他配置選項
HTTPS 支持
如果希望通過 HTTPS 提供服務(wù),可以使用 Let's Encrypt 免費(fèi)證書。安裝 Certbot 并獲取證書:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.com # 將 yourdomain.com 替換為您的域名
配置 HTTPS 示例
server {
listen 80;
server_name yourdomain.com;
# 強(qiáng)制重定向到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl; # 監(jiān)聽 HTTPS
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; # SSL 證書路徑
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # SSL 密鑰路徑
location / {
proxy_pass http://192.168.1.10:8080;
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;
}
}
8. 總結(jié)
通過以上步驟,您可以使用 Nginx 實(shí)現(xiàn)內(nèi)外網(wǎng)的端口映射。這種配置可以有效保護(hù)內(nèi)網(wǎng)服務(wù),同時允許外部用戶安全地訪問這些服務(wù)。根據(jù)需要,您可以進(jìn)一步調(diào)整配置以滿足特定的業(yè)務(wù)需求。
到此這篇關(guān)于詳解如何設(shè)置Nginx實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射的文章就介紹到這了,更多相關(guān)Nginx內(nèi)外網(wǎng)端口映射內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Laravel的Nginx重寫規(guī)則實(shí)例代碼
這篇文章主要介紹了Laravel的Nginx重寫規(guī)則實(shí)例代碼,需要的朋友可以參考下2017-09-09
NGINX中瀏覽器的盜鏈與防止被盜的實(shí)現(xiàn)
本文介紹在局域網(wǎng)內(nèi)實(shí)現(xiàn)盜鏈與防盜鏈的配置方法,通過Nginx設(shè)置valid_referers限制資源訪問來源,非法引用返回403禁止訪問,感興趣的可以了解一下2025-07-07
為Node.js程序配置使用Nginx服務(wù)器的簡明教程
這篇文章主要介紹了為Node.js程序配置使用Nginx服務(wù)器的簡明教程,Nginx與Node自帶的服務(wù)器一樣都擁有非阻塞的高性能,需要的朋友可以參考下2016-01-01
Nginx純配置實(shí)現(xiàn)日志實(shí)時上報的思路與方法
在很多時候我們都需要在頁面上實(shí)時查看nginx的日志輸出,所以下面這篇文章主要給大家介紹了關(guān)于Nginx純配置實(shí)現(xiàn)日志實(shí)時上報的思路與方法,需要的朋友可以參考下2021-12-12
Nginx搭建高效的靜態(tài)圖片服務(wù)器的方法步驟
高效地管理和分發(fā)靜態(tài)資源是至關(guān)重要的,本文主要介紹了Nginx搭建高效的靜態(tài)圖片服務(wù)器的方法步驟,具有一定的參考價值,感興趣的可以了解一下2024-05-05
Nginx 平滑升級的實(shí)現(xiàn)(拒絕服務(wù)漏洞)
本文主要介紹了Nginx 平滑升級的實(shí)現(xiàn)(拒絕服務(wù)漏洞),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02

