UDP(用戶數據報協議)是TCP/IP協議族中的傳輸層協議之一。它不像TCP那樣提供可靠的、面向連接的服務,但可以提供一定程度的傳輸保證。
Nginx可以通過UDP轉發,將接收到的UDP數據包轉發到目標服務器,也可以將來自UDP服務的響應發送回原始請求服務器。這個指南將向您展示如何設置Nginx UDP轉發。
一、nginx轉發UDP
如果您要配置Nginx UDP轉發,必須安裝支持UDP協議的Nginx。要配置UDP轉發,您需要包括如下Nginx軟件包:nginx (>= 1.9.0),ngx_stream_core_module。
1、 安裝支持UDP的Nginx
sudo apt install software-properties-common sudo add-apt-repository ppa:nginx/stable sudo apt update sudo apt install nginx nginx -v
2、修改配置
stream { server { listen 9999 udp; proxy_pass 192.168.1.100:80; } }
以上配置將Nginx配置為偵聽UDP的9999端口。它還指定Nginx將傳入的UDP數據包轉發到IP地址為192.168.1.100,端口為80的主機。
二、nginx轉發服務
1、在配置文件中添加stream塊。
2、在stream塊中添加server塊。
3、在server塊中添加listen和proxy_pass指令。
下面的示例演示如何將Nginx配置為將所有來自UDP服務的數據包轉發給目標UDP服務:
stream { server { listen 12345 udp; proxy_pass 127.0.0.1:3260; } }
以上配置將Nginx配置為偵聽UDP端口12345,並將傳入的UDP數據包轉發到IP地址為127.0.0.1,端口為3260的目標UDP服務。
三、nginx轉發TCP請求
對於TCP轉發的主要過程與上述UDP轉發相似,唯一的不同是將Nginx配置為將TCP數據包轉發到目標TCP服務的IP地址和端口。
下面的示例演示如何將Nginx配置為將所有來自TCP服務的數據包轉發給目標TCP服務:
stream { server { listen 12345; proxy_pass 127.0.0.1:8000; } }
以上配置將Nginx配置為偵聽TCP端口12345,並將傳入的TCP數據包轉發到IP地址為127.0.0.1,端口為8000的目標TCP服務。
四、nginx轉發FTP
1、在Nginx配置文件中創建一個stream塊。
2、在stream塊中創建一個server塊。
3、在server塊中使用listen指定端口,並使用proxy_pass指定FTP服務器的IP地址和端口。
下面的示例演示如何將Nginx配置為轉發FTP流量:
stream { server { listen 21; proxy_pass ftp.example.com:21; } }
以上配置將Nginx配置為在TCP端口21上監聽FTP請求,並將請求轉發到ftp.example.com。
五、nginx轉發PUT請求出錯
Nginx可以運行nginx_proxy和nginx_upload_module。這樣您可以通過Nginx將文件上傳到服務器。以下是導致PUT請求出錯的典型代碼:
server { listen 80; server_name example.com; client_max_body_size 100M; location /upload { proxy_pass http://localhost:9000; proxy_send_timeout 1200; proxy_read_timeout 1200; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
如果PUT請求在上傳/下載中用於400或408響應,那麼它通常會降低速度,這是由於默認的客戶端請求超時(60秒)超過了Nginx默認請求超時(1200秒/20分鐘),因此它無法防止客戶端連接丟失。
六、nginx轉發SFTP請求
SFTP協議是SSH(Secure Shell)的一部分,是一種基於SSH協議的加密文件傳輸協議。要使用Nginx將SFTP請求轉發到目標SFTP服務器,需要安裝Nginx,nginx_sftp_module模塊和libssh2庫。
下面是一個將SFTP請求轉發到目標SFTP服務器的示例:
stream { upstream sftp { server sftp.example.com:22; } server { listen 2222; proxy_pass sftp; } }
以上配置將Nginx配置為在TCP端口2222上監聽SFTP請求,並將請求轉發到sftp.example.com。
七、nginx轉發HTTP請求
下面是一個轉發HTTP請求的示例:
http { server { listen 80; server_name www.example.com; location / { proxy_pass http://127.0.0.1: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; } } }
以上配置將Nginx配置為在TCP端口80上監聽HTTP請求,並將請求轉發到localhost。
原創文章,作者:UDVSN,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/368587.html