如下内容仅供参考,我也不知道下面的理解是否是对的,但愿不要坑到你.nginx
1.nginx如何配置静态资源映射
location ~* (/upload/abc/*) {
root /home/resource;
}
说明:
语法能够参照:http://blog.csdn.net/wusuopubupt/article/details/41851427
1.~*表示后面必定要有一个空格
2./home/resource;分号不能少
3.若是路径有空格,那么须要用双引号将路径包裹起来
4.windows目录,暂时还不知道如何跨盘符(相对nignx所在的盘)定义root目录apache
2. nginx中的upstream与server与server_name与proxy_pass之间?
一直以来都是copy,感受这么他们之间的概念都不清楚,请教了同事,作过随记.感谢威神.
proxy_pass:
location下面的一个配置指令
能够将它理解为将location匹配到的请求转发到哪里.
server_name:
server下面的一个配置指令
我把它当作域名来使用,即为这个server定义一个域名
server:
能够将它理解为服务.
每一个服务能够定义本身的端口(listen)和域名(server_name).
每一个服务能够定义多个location(匹配规则,不一样location之间的优先级没研究过)
upstream:
好像官方直译为"上游",
能够用它来作负载均衡例如,功能很强大
upstream streamName {
server 127.0.0.1:8080 weight=7;
server 127.0.0.1:9080 weight=5;
}
我通常把他当作一个本地项目的入口
upstream streamName { server 127.0.0.1:8080;}
location / { proxy_pass http://streamName; }
之因此有时候会混乱,是我曾经看到过这样的配置,一脸懵逼 windows
upstream www.test.com { server www.test.com; } server { listen 80; server_name www.test.com; location / { proxy_pass http://www.test.com; } }
其实上面的配置理论上来讲会出现递归(死循环)的问题,可是实际上项目跑的没问题.简单分析一下:
..1.发起请求:http://www.test.com,
..2.匹配到server
..3.匹配到location
..4.proxy_pass转发到www.test.com(这里确实佩服nignx的强大,猜它应该是优先将域名与upstream进行匹配, 若是匹配成功,就转发到对应的upstream上,也就是upstream里面定义的server端口上,不然就将它当作域名进行转发)
..5.upstream获得数据,根据规则分配给指定的server(规则大体分为几种,权重,随机,负载量[呵呵,负载量感受好复杂的样子])tomcat
3.如何让nginx自动添加tomcat项目名称 负载均衡
#项目的实际访问地址为127.0.0.1:8080/test/,tomcat中项目名称为test upstream testup{ server 127.0.0.1:8080; } server { listen 80; server_name test.fong.site; #先作第一种解析,http://test.fong.site/ 在这时,直接帮我访问127.0.0.1:8080/test/ location / { 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_connect_timeout 10; proxy_read_timeout 180; proxy_send_timeout 10; proxy_pass http://testup/test/; } #作第二种解析,http://test.fong.site/test/ 帮我访问127.0.0.1:8080/test/ location /test/ { 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_connect_timeout 10; proxy_read_timeout 180; proxy_send_timeout 10; proxy_pass http://testup/test/; } }
4.究竟什么是反向代理,与正向代理之间有什么区别和关系?
正向代理:隐藏客户端,
服务端不知道客户端是谁.
反向代理:隐藏服务端.
客户端不知道服务端是谁.好比你找10086,你根本不知道会转接到哪一个客服
参考文章:http://weizhan.51cto.com/article/view/58ddb424f2dd874307652601spa
但愿能帮你解决问题
本文出处:https://my.oschina.net/longfong/blog/802563.net