反向代理(Reverse Proxy)是指以反向代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时反向代理服务器对外就表现为一个服务器。

在内网IP为192.168.1.100
服务器上部署了某个Apache WEB服务,用来运行PHP程序,该服务的端口开在了8080
。
Apahce反向代理配置
#testproxy.cn
<VirtualHost *:80>
ServerName testproxy.cn
<IfModule mod_proxy.c>
#Reverse Proxy(反向代理)
ProxyRequests Off
ProxyVia On
<Proxy *>
#注意Deny,Allow之间不要有空格
Order Deny,Allow
Deny from all
Allow from all
</Proxy>
#配置跟代理,必需放在最后面,否则其他二级访问的反向代理会失败 下面要成对出现
ProxyPass / http://192.168.1.100:8080/
ProxyPassReverse / http://192.168.1.100:8080/
#若此处项目名称 /demo/ 代理为 / 跟目录访问,session会丢失,需要配置如下信息
#ProxyPassReverseCookiePath /demo/
</IfModule>
</VirtualHost>
Nginx反向代理配置
http {
...
upstream myservice {
server 192.168.1.100:8080;
keepalive 64;
}
...
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name mix.sobird.me;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://myservice;
}
}
}
使用Nginx反向代理Gravatar头像服务
设置proxy_cache
http{
...
proxy_cache_path /var/www/gravatar levels=1:2 keys_zone=gravatar:100m inactive=7d max_size=1g;
}
配置项说明:
- proxy_cache_path 缓存文件路径
- levels 设置缓存文件目录层次;levels=1:2 表示两级目录
- keys_zone 设置缓存名字和共享内存大小
- inactive 在指定时间内没人访问则被删除
- max_size 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。
使用proxy_cache
在nginx vhost server配置文件中添加如下代码:
location / {
proxy_cache gravatar;
proxy_cache_valid 200 206 304 301 302 10d;
proxy_cache_key $uri;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://gravatar.com/;
}
配置项说明:
- proxy_cache gravatar 使用名为 gravatar 的对应缓存配置
- proxy_cache_valid 200 206 304 301 302 10d; 对httpcode为200…的缓存10天
- proxy_cache_key $uri 定义缓存唯一key,通过唯一key来进行hash存取
- proxy_set_header 自定义http header头,用于发送给后端真实服务器
- proxy_pass 指代理后转发的路径
这篇文章目前没有评论