来自: http://storysky.blog.51cto.com/628458/486338/

前几天搭了一个论坛服务器并放到了公司的局域网里面,论坛用的是9066端口并在路由器上面做了个端口转发,而且把bbs.xxx.com这个域名也指向了公司的公网IP,因为想让用户在访问的时候不用输入端口号于是就想在公司的web服务器上面做个跳转,将访问bbs.xxx.com的请求都转到他的服务器上面去。我第一个想法就是 用 nginx的rewrite,过程很简单 配置如下:

server {
listen     80;
server_name  bbs.xxx.com;
rewrite  "^/(.*)$"  http://bbs.xxx.com:9066/$1 break;
          }

于是访问bbs.xxx.com检查了一下,注册,登录发帖等等操作都正常,本以为这样就ok了,结果随后问题出现了,虽然能正常的跳转但是 用户浏览器的域名栏上的地址后面一直跟着 9066 这个端口号,这让领导很不满意,于是我找了下nginx的文档和在qq群问了下别的朋友,没有什么好办法。于是就改用了 proxy_pass,这个配置也很简单:

server {
listen       80;
server_name  bbs.xxx.com;
        location /
         {
        proxy_pass http://bbs.xxx.com:9066/;
          }
        }

然后再访问 bbs.xxx.com 后面的端口号就不在了,注册、登录、发帖都正常,可是不一会儿又出问题了,用户反映论坛无法注册,提示说“单一ip一天内只能注册5次”,这是怎么回事,通过检查日志后发现 所有公网发过来的请求竟然都是 网关的ip地址 ,这下我明白了简单的加了proxy以后如果不进一步设置的话 nginx是不会去判断真正的客户端ip的,而是直接把路由的地址作为请求ip,所以会出现上述情况,分析后查了下 nginx的wiki 于是就在上面又加了几条:

server {
listen       80;
server_name  bbs.xxx.com;
        location /
         {
        proxy_set_header Host $host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://bbs.xxx.com:9066/;
          }
      }

改完以后 reload 了一下nginx,发现日志里面的源ip已经是真实的客户端地址了,重新注册,登录,发帖,都正常,重复了多次后没有发现问题,客户那里也都正常了。

感谢为我提供热情帮助的三门板牙。

下面是从网上找的一篇文章,分析的很详细 http://www.beijus.info/?p=730&cpage=1 ,同时也感谢这篇文章的作者 “蛋蛋面”

nginx 域名跳转一例~~~(rewrite、proxy)的更多相关文章

  1. nginx 域名跳转 Nginx跳转自动到带www域名规则配置、nginx多域名向主域名跳转

    nginx 域名跳转 Nginx跳转自动到www域名规则配置,如果设置使 mgcrazy.com域名在用户访问的时候自动跳转到 www.mgcrazy.com呢?在网上找了好多资料都没有一个完整能解决 ...

  2. nginx域名跳转技巧

    1.地址重写:访问server_name的时候跳转到http://www.cnblogs.com/qinyujie/ 修改nginx配置文件.加入到server{...}字段或者location字段里 ...

  3. NGINX域名跳转案列

    1.不同域名不同路径跳转 nginx实现a.com/teacher域名跳转到b.com/student 若想实现上面题目的跳转,目前鄙人知道两种方式: 1.return 2.proxy_pass 具体 ...

  4. Nginx 域名跳转

    域名跳转 就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 . 域名跳转配置 1.多域名指定一个域名重定向 # 空格分割域名 ...

  5. nginx域名跳转到www下

  6. nginx 301跳转到带www域名方法rewrite(转)

    首先一.得在你的域名管理里面定义 test.com和www.test.com指向你的主机ip地址,我们可以使用nslookup命令测试:直接输入 nslookup test.com和nslookup ...

  7. Apache Rewrite实现URL的跳转和域名跳转

    Apache Rewrite实现URL的跳转和域名跳转   Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基 于服务器级的(httpd.conf)和目录级的 (.h ...

  8. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  9. nginx实现域名跳转

    server { listen 80; server_name www.dd.com www.tt.com; index index.html index.htm index.php; root /u ...

随机推荐

  1. pycharm debug

    1  debug 的模式,只有在打断点是才能运行. 2  主方法运行的时候 ,可以在下面输入一行 a =1 .方便debug 打完断电的会出现三角头, 运行甲壳虫 3   一步一步运行, F8 , 当 ...

  2. 四、dbms_alert(用于生成并传递数据库预警信息)

    1.概述 作用:用于生成并传递数据库预警信息.使用包DBMS_ALERT,则必须以SYS登陆,为该用户授予执行权限.sql>conn sys/oracle as sysdbasql>gra ...

  3. poj3656

    题解: 二分图最大匹配 根据三角形不等式 直接上最大匹配即可 注意编圈取相反数 代码: #include<iostream> #include<algorithm> #incl ...

  4. LeetCode OJ:Implement Queue using Stacks(栈实现队列)

    比较典型的一个题目,easy,不过可以有许多实现方式. 这里用的方式是每次pop完成之后再将stack2中的内容立即倒回stack1中.但是其他的实现也可以不是这样,可以是需要push的时候检查再,如 ...

  5. Kotlin Reference (一) Basic Syntax

    什么是Kotlin Kotlin翻译成中文叫"靠他灵",它是由JetBrains公司发明的一种基于JVM的编程语言,目前Google宣布kotlin为Android开发的官方语言. ...

  6. [Python] RuntimeError: Invalid DISPLAY variable

    1.问题:在本地用matplotlib绘图可以,但是在ssh远程绘图的时候会报错 RuntimeError: Invalid DISPLAY variable 2.原因:matplotlib的默认ba ...

  7. 给View 添加手势,点击无反应 如何给View添加点击事件,手势方法

    项目中有很多地方需要添加点击事件,重复代码很多,所以做了一个UIView的分类,专门做点击事件使用.项目地址:UIView-Tap 代码很简单,主要有一点就是注意分类不能直接添加属性,需要用到运行时相 ...

  8. iOS-----解决Prefix Header出错的问题

    我们在使用 Prefix Header 预编译文件时有时会遇到如下的报错 clang: error: no such file or directory: '/Users/linus/Dropbox/ ...

  9. Makefile中怎么使用Shell if判断

    /********************************************************************* * Makefile中怎么使用Shell if判断 * 说 ...

  10. 类中的__slots__方法与__dict__方法相排斥

    类的 __slots__ 列表 作用: 限定一个类创建的实例只能有固定的属性(实例变量) 不允许对象添加列表以外的属性(实例变量) 防止用户因错写属性的名称而发生程序错误 说明: 1. __slots ...