您的位置:首页 > 运维架构 > 反向代理

Nginx和Apache服务器上配置反向代理

2016-08-01 19:44 786 查看
在实际项目过程中,由于网站要用到一个在线编辑器(个性化的在线编辑软件),需要跨域进行通信!由于跨域通信较多,所以当时就想到在网站服务器上代理编辑软件的请求!

这就是“反向代理”的实际需求!

一、Nginx上配置反向代理

location /edit/ {
proxy_pass  http://edit.host.net/; #Proxy Settings
proxy_redirect     off;
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   Accept-Encoding "";
proxy_set_header   X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          proxy_max_temp_file_size    0;
proxy_connect_timeout      90;
proxy_send_timeout         90;
proxy_read_timeout         90;
proxy_buffering            off;
proxy_buffer_size          4k;
proxy_buffers              4 32k;
proxy_busy_buffers_size    64k;
}


在实际配置过程中,发现在线编辑软件的静态资源文件加载不进来(比如css、js、图片等),后来发现编辑器静态资源的链接都是用的相对路径!当时认为是路径问题,就在

proxy_pass 的域名后面加了“/”,目的是从根路径下引用资源文件!但是测试后发现还是存在一样的问题!最后各种尝试后,发现是以下几行配置文件:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*\.(js|css)?$
{
expires 1h;
}


就是上面的几行配置影响了静态资源的代理路径,导致静态资源加载不到(404错误)!

二、Apache上配置反向代理

在Apache配置反向代理相对比较简单了,直接贴配置代码:

<VirtualHost *:80>
DocumentRoot "D:\phpStudy\WWW\git ecshop"
ServerName http://local.shop.tuwen.com ServerAlias
ProxyRequests On
RewriteEngine off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /edit http://edit.host.net/ ProxyPassReverse /edit http://edit.host.net/ <Directory "D:\phpStudy\WWW\git ecshop">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>


当然,对应服务器支持反向代理的模块需要开启哦!这个一定不要忘记了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: