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的文档和在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)的更多相关文章
- nginx 域名跳转 Nginx跳转自动到带www域名规则配置、nginx多域名向主域名跳转
nginx 域名跳转 Nginx跳转自动到www域名规则配置,如果设置使 mgcrazy.com域名在用户访问的时候自动跳转到 www.mgcrazy.com呢?在网上找了好多资料都没有一个完整能解决 ...
- nginx域名跳转技巧
1.地址重写:访问server_name的时候跳转到http://www.cnblogs.com/qinyujie/ 修改nginx配置文件.加入到server{...}字段或者location字段里 ...
- NGINX域名跳转案列
1.不同域名不同路径跳转 nginx实现a.com/teacher域名跳转到b.com/student 若想实现上面题目的跳转,目前鄙人知道两种方式: 1.return 2.proxy_pass 具体 ...
- Nginx 域名跳转
域名跳转 就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 . 域名跳转配置 1.多域名指定一个域名重定向 # 空格分割域名 ...
- nginx域名跳转到www下
- nginx 301跳转到带www域名方法rewrite(转)
首先一.得在你的域名管理里面定义 test.com和www.test.com指向你的主机ip地址,我们可以使用nslookup命令测试:直接输入 nslookup test.com和nslookup ...
- Apache Rewrite实现URL的跳转和域名跳转
Apache Rewrite实现URL的跳转和域名跳转 Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基 于服务器级的(httpd.conf)和目录级的 (.h ...
- centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课
centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 ...
- nginx实现域名跳转
server { listen 80; server_name www.dd.com www.tt.com; index index.html index.htm index.php; root /u ...
随机推荐
- 2-5-NFS服务器配置和autofs自动挂载-配置Samba服务器配置现实文件共享
大纲: NFS服务器运行原理 实战配置NFS服务器 配置Samba服务器配置现实文件共享 ----------------------------------------------- 问题: # 怎 ...
- HDU5521-最短路-建图
Meeting Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- js中常用的字符串方法
1,基础方法 charAt();返回该位置的字符,类似数组下标: substring();返回选中的字符,两个参数是下标. slice();参数是是一个正数,返回该数之后的剩余字符串:参数是负数,返回 ...
- poj 1724 ROADS 很水的dfs
题意:给你N个城市和M条路和K块钱,每条路有话费,问你从1走到N的在K块钱内所能走的最短距离是多少 链接:http://poj.org/problem?id=1724 直接dfs搜一遍就是 代码: # ...
- rabbitmq&&erlang 安装
# yum install epel-release CentOS and Red Hat Enterprise Linux 6.x wget https://dl.fedoraproject.org ...
- Windows 系统cmd设置添加静态路由方式
电脑上添加静态路由,cmd设置路由 方法/步骤 1.首先在“运行”窗口输入cmd(按WIN+R打开运行窗口),然后回车进入命令行,输入 route add 10.253.251.0 mask ...
- Qt界面(控件)相关设计
(转自:http://blog.chinaunix.net/uid-25799257-id-600157.html) 引言 最近在做数据库相关课程设计,所以就借此机会,先熟悉一下Qt的一些编程,同时 ...
- T-sql 中 truncate 、delete与drop操作数据库的区别
1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. 具体使用语法如下: --删除 ...
- 更新pip源,提高python下载安装包速度的方式(window及linux)
python需要经常安装各种模块,而pip是很强大的模块安装工具,自带的pip下载源在国外,导致每次下载速度太慢,所以我们最好是将自己使用的pip源更换更换成国内的下载源可提高开发效率 linux环境 ...
- Linux设备驱动——简单的字符驱动
本文介绍Linux字符设备的静态注册方法, 其中涉及到的模块加载,不了解的可以先参考 构建和运行模块 1. 还是线上源代码: //memdev.h #ifndef _MEMDEV_H_ #define ...