如下內容僅供參考,我也不知道下面的理解是否是對的,但願不要坑到你.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