在实际项目过程中,由于网站要用到一个在线编辑器(个性化的在线编辑软件),需要跨域进行通信!由于跨域通信较多,所以当时就想到在网站服务器上代理编辑软件的请求! 这就是“反向代理”的实际需求! 一、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.www.ldhost.cn 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> 当然,对应服务器支持反向代理的模块需要开启哦!这个一定不要忘记了! (责任编辑:好模板) |