nginx二次逆エージェント

2959 ワード

前にnginx配置vueプロジェクトと書いたことがあります:vueプロジェクト配置nginx&踏坑記
次の作業で1つのシーンに遭遇しました.
フロントエンドエンジニアリングパッケージ化後、サーバBのnginxに配備され、エンジニアリングを外部ネットワークに公開するためには、外部ネットワークのnginx Aサーバを構成する必要があり、新たにエージェントルールがBサーバを指すようになりました.
1.Aサーバー構成:
server {
        listen       18080;
        server_name  10.108.215.118;
        #charset koi8-r;
		
		#gzip
		
	location ^~ /bms {
            proxy_pass  http://10.108.4.178:18080;
            proxy_set_header HOST $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto  $scheme;
            client_max_body_size 10m;
            proxy_read_timeout 300;
        }
    }

bmsで始まるすべてのリクエスト(bmsはプロジェクトの名前)を転送します.
2.Bサーバ構成
server {
        listen       18080;
        server_name  localhost;
        #charset koi8-r;
		
		#gzip
		gzip on;
        gzip_static on;    
		gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
		gzip_proxied  any;
		gzip_vary on;
		gzip_comp_level 6;
		gzip_buffers 16 8k;
		gzip_http_version 1.1; 

        #access_log  logs/host.access.log  main;

		root dist;
       #location /bms {
		    
			#index index.html;
			#try_files $uri $uri/ /index.html;
			#error_page 404 /index.html;
        #}
		
		location ^~ /bms/authData { 
			proxy_pass   http://10.108.230.207:7401/authData/;
		}
		
		location ^~ /bms/sysConfig { 
			proxy_pass   http://10.108.230.207:7402/sysConfig/;
		}
		
		location ^~ /bms/permissions { 
			proxy_pass   http://10.108.230.207:8762/permissions/;
		}
		
		location ^~ /bms/budget { 
			proxy_pass   http://10.108.230.207:7404/;
		}
		
		location ^~ /bms/publicNotice { 
			proxy_pass   http://10.108.230.207:7403/publicNotice/;
		}
		
		location /bms {
			try_files $uri $uri/ /bms/index.html;
        }
		
		location ~ .*\.(?:htm|html)$ {
		    root dist;
            add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
        }
		
		location ~ .*\.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$
		{
		    root dist;
			expires      365d;
		}

		location ~ .*\.(?:js|css)$
		{
			root dist;
			expires      365d;
		}
		
		
		
    }

ここには私のすべての構成がリストされています.
1.前はgzip配置で、http転送時に資源を圧縮するために使用され、転送ファイルが大きい時に効果は非常に明らかで、私のファイル全体は比較的に小さく、効果はあまり明らかではなく、時間の差は多くない.
2.中間パス規則の構成に重点を置く:
フロントエンドプロシージャのバックグラウンドリクエストに先に一致し、^~式を使用して、一致すると検索を停止することを示します.
静的リソースのリクエスト構成:location/bms
(以上のルールを使用して、フロントエンドエンジニアリングのrequestリクエストが/bmsで始まることを保証する必要があります.これはaxiosで構成可能ですので、注意してください)
3.最後の部分の構成はキャッシュルールについてです.
htmlなどのWebファイルに対してキャッシュを使用しないで、毎回取得するのがサーバーの上で最新であることを保証します;
js cssなどのファイルについては、1年間のキャッシュ期間を設定します.webpackパッケージでは、js cssなどのファイルが生成されるたびに異なるhashコードになるため、htmlで参照されるファイル名が変更されない限り、キャッシュ内のファイルを引き続き使用することができます.