CentOS Nginx 如何配置TCP转口转发

安装Nginx(from GPT)

安装Nginx的步骤因操作系统而异。下面是在常见的操作系统上安装Nginx的方法:

  1. Ubuntu或Debian:
    • 打开终端,并使用以下命令更新软件包列表:sudo apt update
    • 安装Nginx:sudo apt install nginx
  2. CentOS或RHEL:
    • 打开终端,并使用以下命令更新软件包列表:sudo yum update
    • 安装Nginx:sudo yum install nginx
  3. macOS:
    • 使用Homebrew安装Nginx:brew install nginx
  4. Windows:

安装完成后,你可以通过以下命令启动、停止或重新加载Nginx:

  • 启动Nginx:sudo service nginx start(Linux)或nginx(macOS/Windows)
  • 停止Nginx:sudo service nginx stop(Linux)或nginx -s stop(macOS/Windows)
  • 重新加载Nginx配置:sudo service nginx reload(Linux)或nginx -s reload(macOS/Windows)

安装完成后,你可以编辑Nginx的配置文件(通常是/etc/nginx/nginx.conf)来配置反向代理等功能。编辑完成后,重新加载Nginx配置以使更改生效。

请注意,根据你的操作系统和安装方式,上述命令可能略有不同。建议查阅官方文档或适用于你的操作系统的特定安装指南以获取更准确的信息。

转发TCP

1
2
3
4
5
6
7
8
9
10
11
# from GPT
stream {
server {
listen 12345; # 监听的本地端口
proxy_pass backend; # 转发到的后端服务
}
}

upstream backend {
server backend.example.com:54321; # 后端服务的地址和端口
}

可以精简下

1
2
3
4
5
6
7
# from https://www.jianshu.com/p/244386221cc5
stream {
server {
listen 12345; # 监听的本地端口
proxy_pass backend.example.com:54321; # 转发到其他服务端口
}
}

遇到问题

unknown directive “stream” in /etc/nginx/nginx.conf

初步参考的这个CSDN:https://blog.csdn.net/qq_39043100/article/details/89644264

发现就是转载的别人的文章:https://www.tingtao.org/archives/1494.html

但是呢,依然没有解决我的问题,我这里压根没有这个路径

看其评论,才发现是路径不对,经过nginx -V命令查询,才发现我的路径是这个

多了个64,遂改之,仍报错,cd进入到该目录才发现,下面压根没东西

经过再次Google搜索,找到另一篇文章:https://book.aishangwei.net/blog-6.html ,原来是缺少模块,需要先安装模块

1
2
3
4
5
6
7
8
$ yum -y install nginx-mod-stream
$ vim /etc/nginx/nginx.conf // 载入模块
load_module /usr/lib64/nginx/modules/ngx_stream_module.so;
worker_processes 4;
worker_rlimit_nofile 40000;
...

$ systemctl start nginx

最终Nginx正常运行,不再报错,TCP端口正常转发。

总结

GPT很好用,但最多能解决80%的问题,剩下20%还需自己处理,但往往就是这20%的问题,却占用了80%的时间。说GPT能解决问题吧?能!说GPT能提高效率吧?也能,但若是太依赖GPT,可能会被它给你绕进去,跑偏了,导致效率降低。当然,这只是新手易犯的错误,随着使用的加深,逐渐就会知道,哪些问题,GPT能回答,哪些问题不能回答。还有该如何问,才能让GPT更好的回答。进而,才能让GPT真正成为自己的效率神器!