欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx?Socket代理的實(shí)現(xiàn)方法

 更新時(shí)間:2024年04月29日 09:56:37   作者:shandongwill  
Nginx的socket代理通常指的是Nginx通過stream模塊來處理非HTTP的?TCP?流量,本文就來介紹一下Nginx?Socket代理的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下

前言

Nginx 的 socket 代理通常指的是 Nginx 通過 stream 模塊來處理非 HTTP 的 TCP 流量,比如數(shù)據(jù)庫連接、SSH 連接或其他 TCP 協(xié)議的流量。stream 模塊允許 Nginx 作為一個(gè)反向代理來處理這些連接。

簡(jiǎn)單的 Nginx stream 代理配置

以下是一個(gè)簡(jiǎn)單的 Nginx stream 代理配置示例,用于代理 TCP 連接:

events {  
    worker_connections  1024;  
}  
  
stream {  
    server {  
        listen <local_port>;  # Nginx 監(jiān)聽的本地端口  
        proxy_pass <backend_server>:<backend_port>;  # 后端服務(wù)器的地址和端口  
  
        # 可選配置項(xiàng)  
        # proxy_connect_timeout 1s;  # 連接超時(shí)時(shí)間  
        # proxy_timeout 10m;        # 代理超時(shí)時(shí)間  
    }  
}

在這個(gè)配置中,你需要替換 <local_port> 為 Nginx 將要監(jiān)聽的本地端口,以及 <backend_server> 和 <backend_port> 為實(shí)際的后端服務(wù)器地址和端口。

負(fù)載均衡配置

stream 模塊還支持負(fù)載均衡。你可以使用 upstream 塊來定義一組后端服務(wù)器,然后在 server 塊中引用這個(gè) upstream 塊。

stream {  
    upstream backend_servers {  
        server backend1.example.com:12345;  
        server backend2.example.com:12345;  
        # 可以添加更多服務(wù)器  
  
        # 可選配置項(xiàng)  
        # hash $remote_addr;  # 根據(jù)客戶端 IP 進(jìn)行哈希負(fù)載均衡  
        # least_conn;         # 使用最少連接數(shù)的服務(wù)器  
    }  
  
    server {  
        listen <local_port>;  
        proxy_pass backend_servers;  
    }  
}

注意幾點(diǎn):

  • stream 模塊:確保你的 Nginx 版本支持 stream 模塊。較新版本的 Nginx 默認(rèn)包含這個(gè)模塊。
  • 非 HTTP 流量:stream 模塊處理的是 TCP 流量,不是 HTTP 流量。因此,它不適合代理 web 請(qǐng)求。
  • 安全性:當(dāng)你代理敏感數(shù)據(jù)(如數(shù)據(jù)庫連接)時(shí),請(qǐng)確保使用加密連接(如 SSL/TLS),并在 Nginx 配置中啟用相應(yīng)的加密選項(xiàng)。
  • 負(fù)載均衡:除了簡(jiǎn)單的代理功能外,你還可以使用 stream 模塊來實(shí)現(xiàn) TCP 連接的負(fù)載均衡。這可以通過在 upstream 塊中定義多個(gè)后端服務(wù)器來實(shí)現(xiàn)。
  • 日志和監(jiān)控:與 HTTP 代理一樣,你也可以為 stream 代理配置日志和監(jiān)控功能,以便跟蹤和調(diào)試連接問題。

一、編譯安裝支持stream 模塊的Nginx

1.安裝必要的編譯工具和依賴項(xiàng)

在 CentOS 7 上,您可以使用以下命令安裝這些工具:

sudo yum install gcc-c++ pcre-devel zlib-devel make

2. 下載Nginx源代碼

下載 Nginx 1.24.0 的源代碼壓縮包,并解壓縮:

wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz

改名
mv nginx-1.24.0 nginxSrc

3. 配置編譯選項(xiàng)

進(jìn)入 Nginx 源代碼目錄并運(yùn)行configure腳本,指定所需的stream功能模塊

[root@td66 nginxSrc]# ./configure --prefix=/usr/local/nginx --with-stream
checking for OS
 + Linux 3.10.0-957.el7.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found
checking for gcc builtin 64 bit byteswap ... found
checking for unistd.h ... found
checking for inttypes.h ... found
checking for limits.h ... found
checking for sys/filio.h ... not found
checking for sys/param.h ... found
checking for sys/mount.h ... found
checking for sys/statvfs.h ... found
checking for crypt.h ... found
checking for Linux specific features
checking for epoll ... found
checking for EPOLLRDHUP ... found
checking for EPOLLEXCLUSIVE ... not found
checking for eventfd() ... found
checking for O_PATH ... found
checking for sendfile() ... found
checking for sendfile64() ... found
checking for sys/prctl.h ... found
checking for prctl(PR_SET_DUMPABLE) ... found
checking for prctl(PR_SET_KEEPCAPS) ... found
checking for capabilities ... found
checking for crypt_r() ... found
checking for sys/vfs.h ... found
checking for UDP_SEGMENT ... not found
checking for nobody group ... found
checking for poll() ... found
checking for /dev/poll ... not found
checking for kqueue ... not found
checking for crypt() ... not found
checking for crypt() in libcrypt ... found
checking for F_READAHEAD ... not found
checking for posix_fadvise() ... found
checking for O_DIRECT ... found
checking for F_NOCACHE ... not found
checking for directio() ... not found
checking for statfs() ... found
checking for statvfs() ... found
checking for dlopen() ... not found
checking for dlopen() in libdl ... found
checking for sched_yield() ... found
checking for sched_setaffinity() ... found
checking for SO_SETFIB ... not found
checking for SO_REUSEPORT ... found
checking for SO_ACCEPTFILTER ... not found
checking for SO_BINDANY ... not found
checking for IP_TRANSPARENT ... found
checking for IP_BINDANY ... not found
checking for IP_BIND_ADDRESS_NO_PORT ... found
checking for IP_RECVDSTADDR ... not found
checking for IP_SENDSRCADDR ... not found
checking for IP_PKTINFO ... found
checking for IPV6_RECVPKTINFO ... found
checking for TCP_DEFER_ACCEPT ... found
checking for TCP_KEEPIDLE ... found
checking for TCP_FASTOPEN ... found
checking for TCP_INFO ... found
checking for accept4() ... found
checking for int size ... 4 bytes
checking for long size ... 8 bytes
checking for long long size ... 8 bytes
checking for void * size ... 8 bytes
checking for uint32_t ... found
checking for uint64_t ... found
checking for sig_atomic_t ... found
checking for sig_atomic_t size ... 4 bytes
checking for socklen_t ... found
checking for in_addr_t ... found
checking for in_port_t ... found
checking for rlim_t ... found
checking for uintptr_t ... uintptr_t found
checking for system byte ordering ... little endian
checking for size_t size ... 8 bytes
checking for off_t size ... 8 bytes
checking for time_t size ... 8 bytes
checking for AF_INET6 ... found
checking for setproctitle() ... not found
checking for pread() ... found
checking for pwrite() ... found
checking for pwritev() ... found
checking for strerrordesc_np() ... not found
checking for sys_nerr ... found
checking for localtime_r() ... found
checking for clock_gettime(CLOCK_MONOTONIC) ... found
checking for posix_memalign() ... found
checking for memalign() ... found
checking for mmap(MAP_ANON|MAP_SHARED) ... found
checking for mmap("/dev/zero", MAP_SHARED) ... found
checking for System V shared memory ... found
checking for POSIX semaphores ... not found
checking for POSIX semaphores in libpthread ... found
checking for struct msghdr.msg_control ... found
checking for ioctl(FIONBIO) ... found
checking for ioctl(FIONREAD) ... found
checking for struct tm.tm_gmtoff ... found
checking for struct dirent.d_namlen ... not found
checking for struct dirent.d_type ... found
checking for sysconf(_SC_NPROCESSORS_ONLN) ... found
checking for sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ... found
checking for openat(), fstatat() ... found
checking for getaddrinfo() ... found
checking for PCRE2 library ... not found
checking for PCRE library ... found
checking for PCRE JIT support ... found
checking for zlib library ... found
creating objs/Makefile

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

這將配置Nginx以使用"/usr/local/nginx"作為安裝目錄。

4. 編譯和安裝

[root@td66 nginxSrc]# make && make install
make -f objs/Makefile
make[1]: 進(jìn)入目錄“/usr/local/nginxSrc”
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/nginx.o \
	src/core/nginx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_log.o \
	src/core/ngx_log.c

5. 啟動(dòng) Nginx

cd /usr/local/nginx/sbin/
./nginx

6. 驗(yàn)證安裝

打開您的 Web 瀏覽器并訪問服務(wù)器的 IP 地址或域名,您應(yīng)該能夠看到 Nginx 的歡迎頁面。

二、Nginx命令

nginx 命令用于控制 Nginx 服務(wù)器的啟動(dòng)、停止、重新加載配置文件等操作。以下是一些常用的 nginx 命令及其說明:

1. 啟動(dòng) Nginx

nginx

這個(gè)命令將啟動(dòng) Nginx 服務(wù)器。如果配置文件(通常是 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf)存在且沒有語法錯(cuò)誤,Nginx 將開始監(jiān)聽配置的端口,并處理請(qǐng)求。

2. 停止 Nginx

nginx -s stop

或者

sudo service nginx stop

或者在某些系統(tǒng)上

sudo systemctl stop nginx

這些命令將停止正在運(yùn)行的 Nginx 服務(wù)器。-s stop 選項(xiàng)發(fā)送一個(gè)信號(hào)給 Nginx 主進(jìn)程,讓它立即停止。

3. 重新加載配置

nginx -s reload

或者

sudo service nginx reload

或者在某些系統(tǒng)上

sudo systemctl reload nginx

這個(gè)命令將重新加載 Nginx 的配置文件。如果配置文件有變動(dòng),這個(gè)命令將應(yīng)用新的配置,而不需要停止和重新啟動(dòng) Nginx。重新加載配置通常不會(huì)導(dǎo)致正在處理的請(qǐng)求中斷。

4. 測(cè)試配置文件的語法

nginx -t

這個(gè)命令將檢查 Nginx 配置文件的語法是否正確,并返回結(jié)果。如果配置文件有語法錯(cuò)誤,nginx -t 會(huì)指出錯(cuò)誤的位置,但不會(huì)實(shí)際加載配置。

5. 顯示版本信息

nginx -v

這個(gè)命令將顯示當(dāng)前安裝的 Nginx 的版本信息。

6. 顯示編譯選項(xiàng)

nginx -V

這個(gè)命令將顯示 Nginx 在編譯時(shí)使用的選項(xiàng)和包含的模塊。這對(duì)于診斷問題或了解特定模塊是否已編譯非常有用。

7. 其他常用命令

  • 查看幫助信息nginx -h 或 nginx --help
  • 平滑升級(jí) Nginx:可以使用 nginx -s quit 來優(yōu)雅地關(guān)閉舊版本的 Nginx,然后啟動(dòng)新版本。

請(qǐng)注意,上述命令可能需要使用 sudo 來獲取管理員權(quán)限,具體取決于你的系統(tǒng)設(shè)置和 Nginx 的安裝方式。此外,不同系統(tǒng)或安裝方式可能會(huì)使用不同的服務(wù)管理器(如 systemctlservice 或 /etc/init.d/nginx 腳本),所以停止和啟動(dòng)服務(wù)的命令可能有所不同。

三、Nginx stream配置

3.1 編輯nginx.conf文件

vim nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

stream {  
    server {  
        listen 6666;  # Nginx 監(jiān)聽的端口  
        proxy_pass 10.68.8.70:6666;  # 后端服務(wù)器的地址和端口  
    }  
}

3.2檢查配置文件是否正確

nginx -t -c nginx.conf

如果報(bào)如下錯(cuò)誤說明沒有成功安裝stream模塊

nginx: [emerg] unknown directive "stream" in /usr/local/nginx/conf/nginx.conf:16

3.3 使配置文件生效

nginx -s reload

到此這篇關(guān)于Nginx Socket代理的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Nginx Socket代理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx的流式響應(yīng)配置實(shí)現(xiàn)小結(jié)

    Nginx的流式響應(yīng)配置實(shí)現(xiàn)小結(jié)

    nginx是一款自由的、開源的、高性能的HTTP服務(wù)器和反向代理服務(wù)器,本文主要介紹了Nginx的流式響應(yīng)配置實(shí)現(xiàn)小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • Nginx 配置 ModSecurity 網(wǎng)絡(luò)應(yīng)用防火墻實(shí)現(xiàn)

    Nginx 配置 ModSecurity 網(wǎng)絡(luò)應(yīng)用防火墻實(shí)現(xiàn)

    這篇文章主要介紹了Nginx 配置 ModSecurity 網(wǎng)絡(luò)應(yīng)用防火墻實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • Nginx-rewrite模塊概述

    Nginx-rewrite模塊概述

    從功能上看 rewrite 和 location 似乎有點(diǎn)像,都能實(shí)現(xiàn)跳轉(zhuǎn),主要區(qū)別在于 rewrite 是在同一域名內(nèi)更改獲取資源的路徑,這篇文章主要介紹了Nginx-rewrite模塊詳細(xì)介紹,需要的朋友可以參考下
    2023-06-06
  • 高性能軟件負(fù)載OpenResty介紹和安裝使用詳解

    高性能軟件負(fù)載OpenResty介紹和安裝使用詳解

    OpenResty是一個(gè)基于?Nginx?與?Lua?的高性能?Web?平臺(tái),其內(nèi)部集成了大量精良的?Lua?庫、第三方模塊以及大多數(shù)的依賴項(xiàng),這篇文章主要介紹了高性能軟件負(fù)載OpenResty介紹和安裝,需要的朋友可以參考下
    2023-12-12
  • Linux下Nginx負(fù)載均衡多個(gè)tomcat配置的方法步驟

    Linux下Nginx負(fù)載均衡多個(gè)tomcat配置的方法步驟

    這篇文章主要介紹了Linux下Nginx負(fù)載均衡多個(gè)tomcat配置的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • Nginx配置Basic Auth登錄認(rèn)證的實(shí)現(xiàn)方法

    Nginx配置Basic Auth登錄認(rèn)證的實(shí)現(xiàn)方法

    這篇文章主要介紹了Nginx配置Basic Auth登錄認(rèn)證的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • Nginx如何配置負(fù)載均衡

    Nginx如何配置負(fù)載均衡

    這篇文章主要介紹了Nginx如何配置負(fù)載均衡,幫助大家更好的理解和學(xué)習(xí)使用Nginx,感興趣的朋友可以了解下
    2021-03-03
  • 教你如何使用 Nginx 進(jìn)行負(fù)載均衡

    教你如何使用 Nginx 進(jìn)行負(fù)載均衡

    Nginx 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,它也經(jīng)常被用作郵件代理服務(wù)器和通用 TCP/UDP 代理服務(wù)器,本文我們將詳細(xì)介紹如何使用 Nginx 進(jìn)行負(fù)載均衡,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Nginx虛擬主機(jī)的配置實(shí)現(xiàn)

    Nginx虛擬主機(jī)的配置實(shí)現(xiàn)

    虛擬主機(jī)指的就是一個(gè)獨(dú)立的站點(diǎn)配置,是nginx默認(rèn)支持的一個(gè)功能,本文主要介紹了Nginx虛擬主機(jī)的配置實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • windows系統(tǒng)安裝配置nginx環(huán)境

    windows系統(tǒng)安裝配置nginx環(huán)境

    這篇文章介紹了windows系統(tǒng)安裝配置nginx環(huán)境的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評(píng)論