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

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

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

一、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>

当然,对应服务器支持反向代理的模块需要开启哦!这个一定不要忘记了!

 

posted @ 2016-08-01 19:44  冰狼爱魔  阅读(1697)  评论(0编辑  收藏  举报