window下
啓動nginx C:\server\nginx-1.0.2>nginx.exe
中止nginx C:\server\nginx-1.0.2>nginx.exe -s stopcss
#設定實際的服務器列表 upstream tomcatserver1{ server 127.0.0.1:8080; } #HTTP服務器 server { #監聽8090端口,用於HTTP協議 listen 8090; #定義使用localhost訪問 server_name localhost; #首頁 index index.html #編碼格式 charset utf-8; #指向webapp的目錄 #root D:\01_Workspace\Project\github\zp\SpringNotes\spring-security\spring-shiro\src\main\webapp; #反向代理的路徑(和upstream綁定),location 後面設置映射的路徑 location / { proxy_pass http://tomcatserver1; } }
#設定負載均衡的服務器列表 upstream load_balance_server { #weigth參數表示權值,權值越高被分配到的概率越大 server 192.168.1.11:80 weight=5; server 192.168.1.12:80 weight=1; server 192.168.1.13:80 weight=6; } #HTTP服務器 server { #偵聽80端口 listen 80; #定義使用www.xx.com訪問 server_name www.helloworld.com; #對全部請求進行負載均衡請求 location / { root /root; #定義服務器的默認網站根目錄位置 index index.html index.htm; #定義首頁索引文件的名稱 proxy_pass http://load_balance_server ;#請求轉向load_balance_server 定義的服務器列表 #如下是一些反向代理的配置(可選擇性配置) #proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; #後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP proxy_set_header X-Forwarded-For $remote_addr; proxy_connect_timeout 90; #nginx跟後端服務器鏈接超時時間(代理鏈接超時) proxy_send_timeout 90; #後端服務器數據回傳時間(代理髮送超時) proxy_read_timeout 90; #鏈接成功後,後端服務器響應時間(代理接收超時) proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小 proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k如下的話,這樣設置 proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大於這個值,將從upstream服務器傳 client_max_body_size 10m; #容許客戶端請求的最大單文件字節數 client_body_buffer_size 128k; #緩衝區代理緩衝用戶端請求的最大字節數 } }
http 的默認端口號是 80,若是在一臺服務器上同時啓動 3 個 webapp 應用,都用 80 端口,確定是不成的。因此,這三個應用須要分別綁定不一樣的端口號
html
upstream product_server{ server www.helloworld.com:8081; } upstream admin_server{ server www.helloworld.com:8082; } upstream finance_server{ server www.helloworld.com:8083; } server { #此處省略一些基本配置 #默認指向product的server location / { proxy_pass http://product_server; } location /product/{ proxy_pass http://product_server; } location /admin/ { proxy_pass http://admin_server; } location /finance/ { proxy_pass http://finance_server; } }
使用 nginx 配置 https 須要知道幾點:
HTTPS 的固定端口號是 443,不一樣於 HTTP 的 80 端口
SSL 標準須要引入安全證書,因此在 nginx.conf 中你須要指定證書和它對應的 keyandroid
HTTPS服務器 server { #監聽443端口。443爲知名端口號,主要用於HTTPS協議 listen 443 ssl; #定義使用www.xx.com訪問 server_name www.helloworld.com; #ssl證書文件位置(常見證書文件格式爲:crt/pem) ssl_certificate cert.pem; #ssl證書key位置 ssl_certificate_key cert.key; #ssl配置參數(選擇性配置) ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; #數字簽名,此處使用MD5 ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /home/wwwroot/default; index index.html index.htm; } location ~/hone/{ proxy_pass http://127.0.0.1:8080; index dashboard index; proxy_set_header Host $http_host; 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; } }
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location /test { root c:/www/; #對應www目錄下的test目錄,注意文件名和文件夾名不要重複 index index.html index2.htm; #html文件名稱 } location / { root c:/www/default; #對應www目錄下的default目錄 index index.html index2.htm; #html文件名稱 } location ~ .*\. (gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)$ { root c:/www/test/; if (-f $request_filename) { expires 1d; break; } } }
當我輸入 localhost/ 、localhost/login.html 對應目錄是 /www/default
當我輸入 localhost/test/ 、localhost/test/login.html 對應目錄是 /www/testnginx
可是這樣配置有個問題,就是靜態資源的訪問問題,由於每一個項目的靜態資源是不在一個文件夾下的git
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root c:/www/default/; index index.html index.htm; } location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root c:/www/default/; expires 1d; } } server { listen 80; server_name abc.localhost;#二級域名 #charset koi8-r; #access_log logs/host.access.log main; location / { root c:/www/test/; index index.html index.htm; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)$ { root c:/www/test/; if (-f $request_filename) { expires 1d; break; } } }
7、nginx實現移動端和PC訪問不一樣頁面github
location / { #判斷移動端,跳轉轉到m.aaa.com if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) { rewrite ^/(.*)$ http://m.aaa.com redirect;#這裏隨意使用,這一行表明域名欄會跳轉到m.aaa.com #proxy_pass http://101.200.141.xx:8909;#這一行表明域名不會改變,繼續使用aaa.com,可是真正使用的是 m.aaa.com } }
location / { root /home/wwwroot/default; index index.html index.htm; } location ~/hone/{ proxy_pass http://127.0.0.1:8080; index dashboard index; proxy_set_header Host $http_host; 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; }