Linux VPS上配置Nginx反向代理
Nginx是一款高性能的HTTP和反向代理服务器。VPS侦探以前已经多次介绍过Nginx的HTTP应用,比如lnmp一键安装包。下面要说的是Nginx的反向代理功能。
反向代理是什么?
反向代理指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部(或其他)网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端。
一句话说明就是访问的域名是a.com,实际访问的内容是b.com的。
实现方法:
比如我想在VPS上建一个t.vpser.net的域名用来反向代理访问http://127.0.0.1:3000,首先在域名注册商那里的域名管理上为域名t.vpser.net添加A记录到VPS的IP上,再在VPS上修改Nginx的配置文件,添加如下:
server { listen 80; server_name t.vpser.net;
location / { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }
添加好后,先执行:/usr/local/nginx/sbin/nginx -t 检查配置是否正常,如果显示:the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful 则正常,否则按错误提示修改配置。
这样只是简单的反向代理,如果nginx上已经安装 --with-http_sub_module 模块,可以在location / { 中添加上 sub_filter 替换内容 '替换后内容'; 进行简单的内容替换,默认只替换html内容(如更改html源码里面的网址、文章等信息),其他文件类型,需要添加 sub_filter_types 参数指定更多类型,多次替换还需要加上sub_filter_once off; 。
如果网站较大可能会有很多其他的资源需要替代,需要在nginx上添加第三方模块ngx_http_substitutions_filter_module来实现更多功能。
再执行 /usr/local/nginx/sbin/nginx -s reload 使配置生效,域名解析生效后就可以通过t.vpser.net 访问txxx了。
>>转载请注明出处:VPS侦探 本文链接地址:https://www.vpser.net/manage/linux-vps-nginx-reverse-proxy.html
奇怪的是直接输入VPS IP 打开的也是方向代理的网站,本以外需要通过域名才能打开代理的目标网站;下面的我代理的配置:
server {
server_name downloads.openwrt.org;
location / {
proxy_pass http://downloads.openwrt.org/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
@野草, 可以看看下面回复里说的第三方替换模块
代理的网站可以换成IP吗?A到VPS,VPS再访问远程空间返回给访客
@fish, 看楼下的回复。
如果被反代的网站为带子目录的形式,比如http://chinadigitaltimes.net/chinese,然后访问绑定的域名并未能显示内容而是直接跳到http://chinadigitaltimes.net/chinese地址了,怎么回事?如何解决?
@asdfasd, 这个得看网站类型了,只能说是反代一部分。
替换里面的链接就需要再安装第三方模块,http://wiki.nginx.org/HttpSubsModule#Installation
反代任何网站,都是只反代首页,里面的链接都是原网站的,老大,请问如何解决啊
@deardongdong, 可能是还需要连接其他的服务器地址
反向代理twitter只能打开,不能登录呢?
@晓天, 不管是要不要用XXX.COM作为要使用的域名, 都可以直接编辑XXX.COM.conf
添加上上面的代码。
只要配置对就行
军哥 请教几个问题 偶不太懂,如果问题比较白痴 见谅哈 😀 😀
在VPS下添加了多个虚拟主机,在/usr/local/nginx/conf/vhost 下有相应的XXX.COM.CONF
是不是在/usr/local/nginx/conf/nginx.conf添加了上面这段代码后用 XXX.COM.CONF就失效了?
或者是修改在XXX.COM.CONF,去掉原先所有代码,添加这段代码?
做了反向代理会影响网站上的百度GG广告吗?
@kwkw, 好像没有选项控制。
我设置了a.com代理b.com,然后我成功访问了b.com,为何b.com上的页面内容里包含b.com的链接变成a.com了?如http://item.b.com/?id=123 -》 http://item.a.com/?id=123请问VPS侦探是哪个选项在作用? 🙄 🙄
@午夜客, /usr/local/nginx/conf/nginx.conf 里server段有错误
[emerg]: unknown directive "server" in /usr/local/nginx/conf/nginx.conf:92
configuration file /usr/local/nginx/conf/nginx.conf test failed
😥 😥 😥 😥 😥 😥 😥 😥 😥 😥
php没有安装成功!!!502错误http://chlumsan.vserver.cz/