nginx一些問題或者疑惑

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

但願能幫你解決問題
本文出處:https://my.oschina.net/longfong/blog/802563.net

相關文章
相關標籤/搜索