Nginx location proxy与apache proxypass
众所周知,apache和nginx是当今互联网最为流行的web应用了。两者都可以配置反向代理把动态应用交给后端来处理。二者在配置上都十分简单,不过配置方法有所不同。现以为现网应用上一个应用为例,具体作下总结。
我现网应用需求为:以back、plugin、comm、up请求开头的url目录,需要交给后端tomcat处理。dp、upload、brand三个目录存放的都是静态文件,由apache或nginx自己处理。
一、nginx的配置
1、location参数
在用nginx配置时,需要先介绍下nginx的location参数。其用于目录或都文件后缀匹配,具体用法如下:
1location [=|~|~*|^~] /uri/ { … }
2* ~ 为区分大小写匹配
3* ~* 为不区分大小写匹配
4* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
例1:
1location = / {
2# matches the query / only.
3# 只匹配 / 查询。
4}
等号表示精确匹配。
例2:
1location ^~ /images/ {
2# matches any query beginning with /images/ and halts searching,
3# so regular expressions will not be checked.
4}
例3:
1location ~* .(gif|jpg|jpeg)$ {
2# matches any request ending in gif, jpg, or jpeg. However, all
3# requests to the /images/ directory will be handled by
4}
以上参考nginx官方wiki coremodule说明。
2、现网需要求配置
根据以上示例,如果要完成现网需要求配置,其配置文件如下:
1server {
2 listen 80;
3 server_name linux.test.com;
4 root /App/webapp;
5#location /back {
6location ~ ^/(back|plugin|comm|up)/ {
7 proxy_pass http://127.0.0.1:8080;
8 }
9 access_log logs/ds.access.log;
10}
二、apache的配置
使用apache的配置时,需要使用proxypass和ProxyPassReverse两个指令。其具体用法可以参看:https://blog.361way.com/manapache/mod/mod_proxy.html#proxypass 页面。在apache的配置中,我使用了取反的方式进行匹配。先匹配那些不交给后端的目录,将其排除掉后,其余的再交给tomcat处理。具体配置如下:
1<VirtualHost *:80>
2 DocumentRoot /App/webapp/
3 ServerName linux.test.com
4 <Directory /App/webapp>
5 Options FollowSymLinks
6 AllowOverride None
7 Order allow,deny
8 Allow from all
9 </Directory>
10 ProxyPass /dp !
11 ProxyPass /upload !
12 ProxyPass /brand !
13 ProxyPass / http://127.0.0.1:8080/
14 ProxyPassReverse / http://127.0.0.1:8080/
15 ErrorLog logs/ds-error.log
16 CustomLog logs/ds-access.log common
17</VirtualHost>
1、在apache的配置中,我也使用nginx中的方法,对动态目录逐一匹配时,发现可以由tomcat很好的处理。而tomcat内部调用的一些动态url,其又会交给apache处理。发现一些url不能满足需求,这方面不像nginx 。
2、apache配置文件中的directory部分也可以省略。省略后,两者配置文件的多少上差别并不大。
3、取反匹配这个在nginx上也可以完成,只需要在匹配的目录上加上!号即可。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/nginx-apache-proxy/2547.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.