使用nginx与Apache作为反向代理

最近我决定从apache切换到nginx,我仍然使用apache作为反向代理来照顾我所有的dynamic内容。 在过去的2 – 3年里,我一直在使用Apache,我知道如何处理大部分可能的configuration,但是对于nginx来说,这是一个新的世界。

问题是当我使用第三方web应用程序,如phpmyadmin,图片将无法加载,通常我会使用apache的别名,但定义一个位置(nginx的别名)将无济于事。

nginx.conf

# primary server - proxypass server { listen 80; server_name domain.com www.domain.com; access_log /var/www/domain/logs/access_log.nginx main; error_log /var/www/domain/logs/error_log.nginx warn; root /var/www/domain/html/http; # proxy to Apache 2 and mod_python location / { 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; proxy_max_temp_file_size 0; 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; } location /admin/tools/phpmyadmin { root /var/www/admin/phpmyadmin; } # Static files location location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ { root /var/www/domain/html/http; } } 

最后一个位置的问题是,它应该照顾大部分的静态,而不是通过Apache传递(使用Apache只用于反向代理),但是也会redirect/ admin / tools / phpmyadmin上find的所有图片别名到域根。

感谢所有的帮助。 谢谢,

如果你将phpmyadminredirect到apache,你需要使用:

 location ~ ^/admin/tools/phpmyadmin/(.+\.php)$ 

代替 :

 location /admin/tools/phpmyadmin 

我猜第一个Location节正在处理请求。 尝试将静态内容的位置节移动到根位置节之上。 我不记得他们是否是订单具体的,但我记得Apache是​​与它的VirtualHost声明。 否则,您可以将静态图像的位置节移动到根位置,并将其重写为testing

 if ( $request_url ~* /*.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$/ { root /var/www/domain/html/http; }