一 Nginx的安裝配置
1: 下載 nginx
官網下載 http://nginx.org/en/download.html 或者網盤下載
鏈接:https://pan.baidu.com/s/1sYL-0bzoA45xulfOnicx0Q
提取碼:hvmv
下載穩定版本,以nginx/Windows-1.14.2為例,直接下載 nginx-1.14.2.zip
下載后解壓,解壓后如下

2: 啟動 nginx
1)直接雙擊 nginx.exe 進行啟動
2)打開cmd命令視窗,切換到nginx解壓目錄下,輸入命令 nginx.exe 或者 start nginx ,回車即可

3)檢查nginx是否啟動成功
直接在瀏覽器地址欄輸入網址 http://localhost:80,回車,出現以下頁面說明啟動成功

另:可設定開機自啟Nginx
參考博客: http://blog.haoji.me/windows-nginx-server.html
Windows下 常用命令:
1)start nginx 啟動
2)nginx.exe -s stop 停止
3)nginx.exe -s reload 重新加載組態檔
4)nginx.exe -s reopen 重新打開日志檔案
5)nginx -v 查看版本
3: nginx 的組態檔
nginx的組態檔是conf目錄下的nginx.conf,默認配置的nginx監聽的埠為80,如果80埠被占用可以修改為未被占用的埠即可,
整體結構如下:
http {
server {
listen 82; #監聽埠
server_name localhost; # 服務地址
#具體代理實作
location / {
root html;
proxy_pass http://127.0.0.1:8080; #代理路徑
index index.html index.htm; #nginx配置靜態資源
}
}
server {
listen 81;
server_name localhost;
}
.............
}
二 Nginx的組態檔nginx.conf 理論學習


反向代理,其實客戶端對代理是無感知的,因為客戶端不需要任何配置就可以訪問,我們只需要將請求發送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取資料后,在回傳給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器地址,隱藏了真實服務器 IP 地址,
1:反向代理實戰
#不同路徑請求不同服務器配置
server {
listen 81;
server_name localhost;
location /test1/ {
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
location /test2/ {
proxy_pass http://127.0.0.1:8081;
index index.html index.htm;
}
location / {
root html;
proxy_pass http://127.0.0.1:8082;
index index.html index.htm;
}
}
2:負載均衡配置實戰
策略:1:輪詢(默認) 2:weight=1 權重最高

3:ip_hash; 根據第一次ip固定系結訪問服務器地址

4:fair; 根據回應時間分配

upstream myserver {
server 127.0.0.1:8000; #ip地址
server 127.0.0.1:9090;
server 127.0.0.1:8080;
}

3: 動靜分離

server {
listen 80;
server_name localhost;
#靜態資源
location /jingtai {
root /static/html/;
index index.html index.htm;
}
#動態資源
location /dongtai {
root /data/;
autoindex on;
}
}
4: 高可用 集群

其他詳解

具體實列如下:
#user nobody;
worker_processes 2;
#error_log logs/error.log;
#pid logs/nginx.pid;
#最大檔案打開數(連接),可設定為系統優化后的ulimit -HSn的結果
worker_rlimit_nofile 360000;
events {
#epoll是多路復用IO(I/O Multiplexing)中的一種方式,但是僅用于linux2.6以上內核,可以大大提高nginx的性能
#use epoll;
#單個后臺worker process行程的 最大并發鏈接數
worker_connections 100000;
#是否串行處理連接
multi_accept off;
}
http {
#檔案擴展名與型別映射表
include mime.types;
#默認檔案型別
default_type application/octet-stream;
#設定請求快取
#戶端請求的最大可接受體大小,由行表示
client_max_body_size 50m;
#服務器名字的hash表大小
server_names_hash_bucket_size 256;
#客戶機的請求頭設定大小,對于絕大多數請求,1K的緩沖區大小就足夠了
client_header_buffer_size 256k;
#用來指定客戶端請求中較大的訊息頭的快取最大數量和大小
large_client_header_buffers 4 256k;
#用于配置轉發至tomcat后;tomcat獲取客戶端正式ip
#允許重新定義和添加一些將被傳輸到代理服務器的請求頭行,作為值,可以使用文本、變數及其組合,
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#解決js跨域的問題
#增加頭標
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
#指定客戶機請求體緩沖區大小,
client_body_buffer_size 256k;
#客戶機的請求頭設定讀取超時,
client_header_timeout 3m;
#客戶機的請求體設定讀取超時,
client_body_timeout 3m;
#客戶端分配回應超時時間,
send_timeout 3m;
#訪問日志存放路徑
access_log no;
#客戶端連接保持活動的超時時間,在超過這個時間之后服務器會關閉該鏈接,
keepalive_timeout 0;
#修改或隱藏Nginx的版本號
server_tokens off;
#虛擬主機配置
server {
#listen指令指定所包含的服務器接受的地址和埠,可以只指定地址、埠或服務器名作為地址
listen 80;
#e用來指定ip地址或者域名,多個域名之間用空格分開
server_name localhost;
#對 "/gzh" 啟用反向代理
# location /gzh
# {
# #根據運算式來更改URI,或者修改字串,注意重寫運算式只對相對路徑有效,
# #此處是將/gzh以前的地址替換成http://weixin.qq.com/q/xxx
# rewrite ^ http://weixin.qq.com/q/xxx;
# }
# location /admin {
# root /usr/share/nginx/dist/;
# index index.html index.htm;
# }
location /peng {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
# proxy_set_header Host $proxy_host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Via "nginx";
}
#跳轉到/peng
location / {
proxy_pass http://127.0.0.1:8080/peng/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#后臺管理
server
{
listen 8080;
server_name localhost;
#default_type 'text/html';
charset utf-8;
#靜態資源的分配
location / {
root /usr/share/nginx/dist/;
index index.html index.htm;
}
#后臺訪問介面代理
location /peng {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
# proxy_set_header Host $proxy_host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Via "nginx";
}
}
# server
# {
# listen 8080;
# server_name localhost;
# #default_type 'text/html';
# charset utf-8;
# # 日志級別
# #error_log logs/error.log info;
# location / {
# root /usr/share/nginx/dist/;
# index index.html index.htm;
# }
# }
# server
# {
# listen 8080;
# server_name localhost;
# #default_type 'text/html';
# charset utf-8;
# # 日志級別
# #error_log logs/error.log info;
# location /test {
# default_type text/html;
# return 200 "207_8081";
# }
# location /peng {
# proxy_pass http://127.0.0.1:8080;
# proxy_set_header Host $proxy_host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Via "nginx";
# }
# location / {
# root html;
# index index.html index.htm;
# }
# }
}
補充說明:

1、= :用于不含正則運算式的 uri 前,要求請求字串與 uri 嚴格匹配,如果匹配成功,就停止繼續向下搜索并立即處理該請求,
2、~:用于表示 uri 包含正則運算式,并且區分大小寫,
3、~:用于表示 uri 包含正則運算式,并且不區分大小寫,
4、^~:用于不含正則運算式的 uri 前,要求 Nginx 服務器找到標識 uri 和請求字串匹配度最高的 location 后,立即使用此 location 處理請 求,而不再使用 location 塊中的正則 uri 和請求字串做匹配,
注意:如果 uri 包含正則運算式,則必須要有 ~ 或者 ~ 標識,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/250201.html
標籤:其他
