VPS侦探论坛

 找回密码
 注册
查看: 3890|回复: 10

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

[复制链接]
发表于 2019-4-29 10:06:15 | 显示全部楼层 |阅读模式

本帖最后由 蛋蛋的蛋 于 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行报错了。郁闷
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2019-4-29 10:39:55 | 显示全部楼层


四层协议转发是stream模块,upstream是
lnmp 1.5及以上是默认编译安装了stream模块的
之前的lnmp版本可以下载1.6的安装脚本,使用里面的升级脚本对nginx进行升级
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 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层模块

美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2019-4-29 11:42:11 | 显示全部楼层



本帖最后由 蛋蛋的蛋 于 2019-4-29 11:45 编辑
  1. stream {
  2.     upstream stream_backend {
  3.         least_conn;
  4.         server backend1.example.com:12345 weight=5;
  5.         server backend2.example.com:12345 max_fails=2 fail_timeout=30s;
  6.         server backend3.example.com:12345 max_conns=3;
  7.     }
  8.    
  9.     upstream dns_servers {
  10.         least_conn;
  11.         server 192.168.136.130:53;
  12.         server 192.168.136.131:53;
  13.         server 192.168.136.132:53;
  14.     }
  15.    
  16.     server {
  17.         listen        12345;
  18.         proxy_pass    stream_backend;
  19.         proxy_timeout 3s;
  20.         proxy_connect_timeout 1s;
  21.     }
  22.    
  23.     server {
  24.         listen     53 udp;
  25.         proxy_pass dns_servers;
  26.     }
  27.    
  28.     server {
  29.         listen     12346;
  30.         proxy_pass backend4.example.com:12346;
  31.     }
  32. }
复制代码

我错了。这是官方的文档,但为啥 proxy_pass aa; 这样就报错呢。直接提示语法有错误,
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 2019-4-29 11:47:06 | 显示全部楼层

nginx: [emerg] "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

军哥运维代购:http://shop63846532.taobao.com/

 楼主| 发表于 2019-4-29 12:27:03 | 显示全部楼层

解决了stream配置不能放到http模块内在 vhost 文件夹下面创建的 都是在http模块下面。要回到上层目录 nginx.conf里面配置
发表于 2019-4-29 12:29:01 | 显示全部楼层

stream段的配置必须是要在http段前面的,你可以检测配置文件顺序是否有问题,要不贴出全部配置文件看一下
你这个vhost目录的是属于http的
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2019-4-29 12:48:31 | 显示全部楼层

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

想取客户端ip转发过去,

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

该怎么配置呢。目前转发过去的ip 是转发服务器的ip
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 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;
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2019-4-30 11:01:51 | 显示全部楼层



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

但是我那是一个软件程序,获取的ip还是服务器的ip
发表于 2019-4-30 20:04:36 | 显示全部楼层

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

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

你程序上获取这个X-Real-IP的header不就行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-9-22 21:25 , Processed in 0.028031 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表