`
sg552
  • 浏览: 623556 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
47437293-94b9-3b04-9152-8971c7580049
白手起家学习使用Flex
浏览量:18809
社区版块
存档分类
最新评论

转载: nginx 域名跳转一例~~~(rewrite、proxy)

阅读更多
转载的  ,  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的文档, 问了下别的朋友,没有什么好办法。于是就改用了 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-1.5.8.tar.gz

    在本例中,我们关注的是 Nginx 的一个特定版本——"nginx-1.5.8.tar.gz"。这个文件是一个压缩包,采用的是 tar 和 gzip 格式,这是 Linux 系统中常见的文件打包和压缩方法。"tar" 用于将多个文件或目录打包成一个...

    Lua和Nginx结合使用的超级指南

    为了具体说明如何使用Lua和Nginx扩展API,我们将以SentimentAPI为例进行介绍。SentimentAPI是一个简单的情感分析API,可以通过发送REST请求来获取单词或句子的情感值。 #### 分析部分:扩展SentimentAPI 在本部分...

    centos编译nginx

    在本文中,我们以 Nginx 1.10.2 稳定版为例进行安装,该版本是在撰写时官方推荐的稳定版本。 首先,为了成功编译 Nginx,我们需要安装一些必要的依赖库。这些依赖包括: 1. zlib:支持 Nginx 的 gzip 模块,用于...

    使用Nginx实现根据 IP 匹配指定 URL

    在讨论使用Nginx实现根据IP地址匹配特定URL并进行页面跳转时,我们首先要了解Nginx的基本工作原理。Nginx是一款高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP服务器。它被广泛使用于处理静态内容,代理...

    安装Nginx(负载均衡器)

    本例中使用了自定义配置命令来编译安装Nginx,配置命令如下: ```bash [root@localhost]# ./configure --prefix=/usr/local/server/nginx --with-openssl=/usr/include \ --with-pcre=/usr/include/pcre/ --...

    nginx-config-examples

    Nginx是一款高性能、轻量级的Web服务器和反向代理服务器,因其高效稳定和灵活的配置而备受青睐。本文将深入探讨`nginx-config-examples`,并以`example.com`为例,帮助你理解和应用Nginx的配置。 1. **基本配置结构...

    vue、react等单页面项目应该这样子部署到服务器

    单页面应用(SPA)如Vue和React通常在开发环境中运行良好,但在部署到生产服务器时,由于前端路由机制,可能会遇到一系列问题。为了解决这些问题,我们需要将SPA部署到像Nginx、Apache或Tomcat这样的Web代理服务器,并...

    urlrewriting error 404-开源

    在开源软件的背景下,解决方案可能包括寻找与IIS URL重写兼容的开源替代品,例如Nginx服务器的rewrite模块或Apache的mod_proxy等。同时,开发者需要熟悉UNIX/Linux环境下的服务器配置,理解和应用mod_rewrite的规则...

Global site tag (gtag.js) - Google Analytics