基于nginx的反向代理配置。

LNMP反代

环境为LNMP一键包
nginx.conf文件的http配置中加入:

map $http_upgrade $connection_upgrade {
default upgrade;
''      close;
}

domain.conf配置如下:

location / {
proxy_pass            http://127.0.0.1:8080;
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      Upgrade $http_upgrade;
proxy_set_header      Connection $connection_upgrade;
client_max_body_size  1m;
}

完整domain.conf配置示例

server
{
listen 80;
#listen [::]:80;
server_name www.imcxx.com ;
return 301 https://www.imcxx.com$request_uri;
}
#监听80并301转发到https

server
{
listen 443 ssl http2;
#listen [::]:443 ssl http2;
server_name www.imcxx.com ;

ssl ****
#--SSL配置,省略--

#--反代开始--
location / {
proxy_pass            http://127.0.0.1:8080;
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      Upgrade $http_upgrade;
proxy_set_header      Connection $connection_upgrade;
client_max_body_size  1m;
}
#--反代结束--
#其他的默认多余配置全部删除
}

其他方案

文章来源:腾讯云-用户1163528
以下没用仔细研究过,先做的个备份。

创建缓存文件夹

mkdir /home/cache/path -p
mkdir /home/cache/temp -p

修改nginx.conf文件中的http区域加入:

#--开始--
client_body_buffer_size  512k;#缓冲区代理缓冲用户端请求的最大字节数
proxy_connect_timeout    5;#nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout       60;#连接成功后,后端服务器响应时间(代理接收超时)
proxy_send_timeout       5;#请求的超时时间
proxy_buffer_size        16k;#设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers            4 64k;#proxy_buffers缓冲区,网页平均在64k以下
proxy_busy_buffers_size 128k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 128k;
proxy_temp_path   /home/cache/temp;#新建相应的目录
proxy_cache_path  /home/cache/path levels=1:2 keys_zone=cache_one:100m inactive=3d max_size=5g;
#--结束--
#最后一段是反代的一些缓存和设置,最后一句cache_one为缓存区名字,100m是内存占用, 3d是3天删除, 5g是缓存空间,这些时间只是做镜像反代不用设置太长,如果是做集群负载就可以加长相互的连接时间。

反代http

修改domain.conf网站文件:

location / {
sub_filter www.domain.com www.baidu.com; #网站域名,反代域名
sub_filter_once off;#进行替换
proxy_cache cache_one;
#缓存区名称
proxy_cache_valid  200 304 3h;
#200 304状态缓存3小时
proxy_cache_valid 301 3d;
#301状态缓存3天
proxy_cache_valid any 10s;
#其他状态缓存(如502 404)10秒
proxy_cache_key "$scheme://$host$request_uri";
#缓存key规则,自动清除缓存
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#向后端传递访客ip
proxy_set_header Referer http://www.baidu.com;
#强制定义Referer
proxy_set_header Host www.baidu.com;
#定义主机
proxy_pass http://www.baidu.com;
#
proxy_set_header Accept-Encoding "";
#重要 将信息传递到服务器端
}

反代https

修改domain.conf网站文件:

location / {
sub_filter www.domain.com www.test.com; #网站域名,反代域名
sub_filter_once off;
proxy_cache cache_one;
#缓存区名称
proxy_cache_valid  200 304 3h;
#200 304状态缓存3小时
proxy_cache_valid 301 3d;
#301状态缓存3天
proxy_cache_valid any 10s;
#其他状态缓存(如502 404)10秒
proxy_cache_key "$scheme://$host$request_uri";
#缓存key规则,自动清除缓存
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#向后端传递访客ip
proxy_set_header Referer https://www.test.com;
#强制定义Referer
proxy_set_header Host www.test.com;
#定义主机
proxy_pass_header Set-Cookie;
#这两句是为了实现wordpress的正常功能
#proxy_cache_bypass $logged_in;
#proxy_no_cache $logged_in;
#这两句是为了实现wordpress的正常功能
proxy_pass https://www.test.com;
#这种写法,这里就必须得是https
proxy_set_header Accept-Encoding "";
#重要将信息传递到服务器端
}
最后修改:2019 年 11 月 23 日 23 : 27