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
@jxyk2007, 一个是跑php用,一个是跑反向代理的肯定不一样。
server
{
listen 80;
server_name xxxxxxxx.vserver.cz;
index index.html index.htm index.php;
root /home/wwwroot;
location ~ .*\.(php|php5)?$
{
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
====================
怎么和你那代码不一样啊?
好像不行啊,得到的效果和301一样
GHS的IP越来越少了,只能用反向代理穿越了
max_children 我已经增大的
本来一键安装包默认的时候 都是N久打不开 然后现实504的……
后来我把max_children 增大以后 才是大概1分钟左右现实502的
@海无影, 502的话也有可能是php-fpm.conf里的max_children 值设置的太小不够用。
哇 nginx的反向代理配置这么简单啊
vpser能去我的博客 帮我简单看一下 我的第一篇文章 提问的 问题吗
我有一个网站程序是UCHOME2.0改的 在LNMP一键安装包下用不了 但是在vpsyou的LAMP搭建文档下(http://www.vpsyou.com/centos-5-compile-install-apache-php-mysql/)安装后使用正常
这是为什么啊?
看那个程序的首页貌似 数据库查询非常多 不知道是不是这个原因 按照vpsyou那篇文章搭建的LAMP 其中有一部是更改mysql的最大连接数的 但是我后来在LNMP上也修改了 还是不行
请你帮忙看一下~谢谢
已经解决了。谢谢vpser管理员。感谢。 😀 😀
怎么自动修改了,这一行的代码为http://littz.com/ghs-littz-com-alternative-ghs-google-com.html在这里的第三段代码。谢谢您。
您好,管理员。我在修改nginx.conf文件时。
加入如下代码:
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_pass http://ghs;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect false;
}
但是提示这一行:proxy_pass http://ghs;
有问题:
[emerg]: invalid number of arguments in "proxy_pass" directive in /usr/local/nginx/conf/nginx.conf:118
configuration file /usr/local/nginx/conf/nginx.conf test failed
请问,该怎么修改?谢谢您。
原始文件的地址:http://littz.com/ghs-littz-com-alternative-ghs-google-com.html
谢谢您。
这样代理,图片都不会显示出来,其余OK
@风铃, /usr/local/nginx/conf/nginx.conf
您好,请问:“再在VPS上修改Nginx的配置文件”指的是哪个文件,我是新手,比较不懂。谢谢您。
发现好多地方还是回直连到被代理的网站原始url,正如一楼所述,不知道这是怎么回事?
是可以访问了,但是点击任何一个连接,马上就无效了。。
哈哈,原来这就叫反向代理,很荐