早上好,先生们,
所以,我现在遇到的问题是我希望这个设置能够正常工作:
http://qwe1.com/
该请求应转到 Apache 并从静态内容文件夹中获取所有图像,此配置可以很好地工作。
http://qwe1.com/forum
该请求应该代理到server2(proxy.qwe1.com),现在也能很好地运行。
http://qwe1.com/forum/example.jpg
由于此请求与同一个论坛有关,因此也应代理到 server2,但由于静态缓存指令,此方法目前无法使用。它匹配静态缓存指令并尝试在磁盘本地查找图像,并在 static.error.log 中给出 404,您可以在下面看到。如果我注释掉静态缓存指令,我就会得到所需的设置,但我当然也希望运行该缓存。
我尝试通过重写来解决这个问题,到目前为止我已经尝试过这些解决方案
location ~* ^(?P<part_uri>/forum/.*\.(css|js|jpg|jpeg|png|swf|gif|svg|ttf|eot))$ {
proxy_pass http://proxy.qwe1.com/forum_en$part_uri;
proxy_redirect off;
proxy_set_header Host $host;
access_log /var/log/nginx/TMP.log;
error_log /var/log/nginx/TMP.log;
}
这个解决方案基本上转发了http://qwe1.com/forum到http://qwe1.com/不知何故,我还没能真正弄清楚为什么,至少它不起作用。
我也尝试过这个解决方案
rewrite ^(/forum/*\.(css|js|jpg|jpeg|png|swf|gif|svg|ttf|eot))$ /forum_en/$1;
location /forum_en {
proxy_pass http://proxy.qwe1.com;
proxy_redirect off;
proxy_set_header Host $host;
access_log /var/log/nginx/TMP.log;
error_log /var/log/nginx/TMP.log;
}
它给出了与之前相同的症状,我被重定向到http://qwe1.com/forum到http://qwe1.com/
大家有什么想法吗?下面是整个配置。提前致谢。
## one.qwe1.com = server1
## proxy.qwe1.com = server2
server {
listen 80;
server_name one.qwe1.com;
access_log /var/log/nginx/qwe1.com.access.log;
error_log /var/log/nginx/qwe1.com.error.log;
# proxy /forum to server2
location /forum {
proxy_pass http://proxy.qwe1.com/forum_en/;
proxy_redirect off;
proxy_set_header Host $host;
access_log /var/log/nginx/TMP.log;
error_log /var/log/nginx/TMP.log;
}
# static content folders
location ~ ^/(images|css|js|fonts) {
root /var/www/qwe1.com/current/public;
access_log /var/log/nginx/qwe1.com.static.access.log;
error_log /var/log/nginx/qwe1.com.static.error.log;
}
# static content files
location ~* \.(css|js|jpg|jpeg|png|swf|gif|svg|ttf|eot)$ {
root /var/www/qwe1.com/current/public;
access_log /var/log/nginx/qwe1.com.static.access.log;
error_log /var/log/nginx/qwe1.com.static.error.log;
}
# proxy to apache
location / {
# proxy settings
proxy_pass http://127.0.0.1:8080;
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;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
答案1
前几天也遇到过类似的问题:答案。
概括:
正则表达式的优先级高于“普通”位置语句。
要更改此^~
设置,请使用/论坛/位置如下:
location ^~ /forum/ {
# proxy_pass to server2
}
答案2
我所做的是将图像和图像文件夹的位置提升到根 (/) 位置下,这样就可以正确排序,很容易修复。