蛋蛋的蛋 发表于 2019-4-29 10:06:15

nginx4层转发的模块默认编译进去了吗

本帖最后由 蛋蛋的蛋 于 2019-4-29 10:08 编辑

用的是1.5稳定版
需要做个端口转发,

请问下军哥 upstream 模块默认编译了吗

我怎么报错了。

该怎么编译呢,










补充内容 (2019-4-29 10:20):
      1 upstream aa {
      2 server 127.0.0.1:3306;
      3 }
      4
      5 server {
      6 listen 3307;
      7 proxy_pass aa;
      8 }
说我第7行报错了。郁闷

licess 发表于 2019-4-29 10:39:55

四层协议转发是stream模块,upstream是
lnmp 1.5及以上是默认编译安装了stream模块的
之前的lnmp版本可以下载1.6的安装脚本,使用里面的升级脚本对nginx进行升级

蛋蛋的蛋 发表于 2019-4-29 11:14:35

本帖最后由 蛋蛋的蛋 于 2019-4-29 11:15 编辑

谢谢军哥回复。
发现问题了 proxy_pass aa;

不加http就报错,加上proxy_pass http://bbs_http; 就不报错了

可我那些是tcp,不是http的。还是因为那upstream 没编译吗
那可以这样理解,
upstream是4层模块

stream是7层模块
:o

蛋蛋的蛋 发表于 2019-4-29 11:42:11

本帖最后由 蛋蛋的蛋 于 2019-4-29 11:45 编辑

stream {
    upstream stream_backend {
      least_conn;
      server backend1.example.com:12345 weight=5;
      server backend2.example.com:12345 max_fails=2 fail_timeout=30s;
      server backend3.example.com:12345 max_conns=3;
    }
   
    upstream dns_servers {
      least_conn;
      server 192.168.136.130:53;
      server 192.168.136.131:53;
      server 192.168.136.132:53;
    }
   
    server {
      listen      12345;
      proxy_pass    stream_backend;
      proxy_timeout 3s;
      proxy_connect_timeout 1s;
    }
   
    server {
      listen   53 udp;
      proxy_pass dns_servers;
    }
   
    server {
      listen   12346;
      proxy_pass backend4.example.com:12346;
    }
}https://i.loli.net/2019/04/29/5cc673434e3ff.png
我错了。这是官方的文档,但为啥 proxy_pass aa; 这样就报错呢。直接提示语法有错误,

蛋蛋的蛋 发表于 2019-4-29 11:47:06

nginx: "proxy_pass" directive is not allowed here in /usr/local/nginx/conf/vhost/forxieyi.conf:3
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

蛋蛋的蛋 发表于 2019-4-29 12:27:03

解决了stream配置不能放到http模块内在 vhost 文件夹下面创建的 都是在http模块下面。要回到上层目录 nginx.conf里面配置

licess 发表于 2019-4-29 12:29:01

stream段的配置必须是要在http段前面的,你可以检测配置文件顺序是否有问题,要不贴出全部配置文件看一下
你这个vhost目录的是属于http的

蛋蛋的蛋 发表于 2019-4-29 12:48:31

嗯嗯。谢谢军哥。现在配置好了,

想取客户端ip转发过去,

    server {
      listen   12346;
      proxy_pass backend4.example.com:12346;
    }

该怎么配置呢。目前转发过去的ip 是转发服务器的ip

licess 发表于 2019-4-29 18:02:13

蛋蛋的蛋 发表于 2019-4-29 12:48
嗯嗯。谢谢军哥。现在配置好了,

想取客户端ip转发过去,


proxy_set_header   X-Real-IP$remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

蛋蛋的蛋 发表于 2019-4-30 11:01:51

谢谢军哥,这样设置貌似只对下个服务器是nginx 有效,

但是我那是一个软件程序,获取的ip还是服务器的ip

licess 发表于 2019-4-30 20:04:36

蛋蛋的蛋 发表于 2019-4-30 11:01
谢谢军哥,这样设置貌似只对下个服务器是nginx 有效,

但是我那是一个软件程序,获取的ip还是服务器的ip ...

你程序上获取这个X-Real-IP的header不就行了
页: [1]
查看完整版本: nginx4层转发的模块默认编译进去了吗