1 在大型項目開發中,可能會有多個應用部署在不一樣機器上,若是想讓用戶訪問單個域名或IP訪問到這些應用,可使用 nginx 的反向代理,將應用的地址經過 nginx 代理,用戶經過訪問 nginx 地址便可訪問到全部應用。html
也能夠在 nginx 機器上作權限控制。nginx
因爲本身資源有限,下面例子是在一臺機器上部署多個應用,每一個應用佔用不一樣端口,經過 nginx 反向代理,將應用的不一樣端口代理到主機的 80 端口。nginx 配置以下後端
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;
#使用 epoll 模型提升併發效率 events { use epoll; worker_connections 65535; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format access '$HTTP_X_REAL_IP - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; gzip on; client_max_body_size 50m; #緩衝區代理緩衝用戶端請求的最大字節數,能夠理解爲保存到本地再傳給用戶 client_body_buffer_size 10m; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; proxy_connect_timeout 300s; #nginx跟後端服務器鏈接超時時間(代理鏈接超時) proxy_read_timeout 300s; #鏈接成功後,後端服務器響應時間(代理接收超時) proxy_send_timeout 300s; proxy_buffer_size 64k; #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小 proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k如下的話,這樣設置 proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大於這個值,將從upstream服務器傳遞請求,而不緩衝到磁盤 proxy_ignore_client_abort on; #不容許代理端主動關閉鏈接 # 若是有多個服務器主機,能夠有多個 server 模塊, server { listen 80; # 監聽的主機端口, server_name 140.187.167.220;#就是內部服務器的 IP 地址,或者域名
# 每一個 location 表明代理一個位置,好比下面的表示:當用戶訪問 ${server_name}:${listen}/${location} 即 140.187.167.220:80/portal 時,實際是訪問內部服務器 ${proxy_pass} 即 140.187.167.220:8082/portal
# 一個 server 模塊下有多個 location 表示,代理該服務器的多個位置
# 若是有多個 server 模塊,表示多個物理主機,即 ip 不一樣
location /portal { proxy_redirect off; 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_pass http://140.187.167.220:8082/portal; proxy_set_header Cookie $http_cookie; } location /admin { proxy_redirect off; 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_pass http://140.187.167.220:8080/admin; proxy_set_header Cookie $http_cookie; }
# 使用 nginx 作一個代理本地圖片文件夾。
location ^~/images/upload/.*.(gif|jpg|jpeg|png|bmp|tiff|svg|pcd)$ { expires 30d; } access_log /var/log/nginx/proxy.log; } }
對於 location 的說明能夠參看以前的博文 nginx配置文件中location說明 緩存
若是有多個應用在不一樣主機上,應該有多個 server 塊,servername 就是 server 的 IP 地址服務器
若是想代理一個主機上的多個位置,須要在一個 server 塊下有多個 location 塊。cookie