-
1 # 計算機技術愛好者
-
2 # 雲渺書齋
Nginx概述
Nginx是lgor Sysoev為俄羅斯訪問量第二的rambler.ru站點設計開發的。從2004年釋出至今,憑藉開源的力量,已經接近成熟與完善。
Nginx功能豐富,可作為HTTP伺服器,也可作為反向代理伺服器,郵件伺服器。支援FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。並且支援很多第三方的模組擴充套件。
常用功能反向代理,代理物件為服務端做代理,使客戶端不需要感知服務端的存在,只需要訪問代理伺服器便可獲得想要的結果。實現限流、負載均衡、動靜分離等。負載均衡(Load Balance),是分散式系統中一個非常重要的概念。當訪問的服務具有多個例項節點時,需要根據某種“均衡”的策略決定請求發往哪個節點,這個過程就是所謂的負載均衡。多在高併發情況下需要使用。其原理就是將資料流量分攤到多個伺服器執行,減輕每臺伺服器的壓力,多臺伺服器(叢集)共同完成工作任務,從而提高了資料的吞吐量。Nginx是一個輕量級、高效能、穩定性高、併發性好的HTTP和反向代理伺服器。web快取,Nginx可以對不同的檔案做不同的快取處理,配置靈活,並且支援FastCGI_Cache,主要用於對FastCGI的動態程式進行快取。配合著第三方的ngx_cache_purge,對制定的URL快取內容可以的進行增刪管理配置示例修改Nginx目錄下nginx.conf配置檔案,如下所示:
upstream server {
ip_hash;
server 192.168.200.129:80; #第一臺負載的ip及埠
server 192.168.200.131:80; #第二臺負載的ip及埠
}
server {
listen 80;
server_name localhost Nginx_ip;
location / {
proxy_pass http://server;
proxy_redirect default;
}
}
引數說明upstreamupstream模組主要負責負載均衡的配置,透過預設的輪詢排程方式來分發請求到後端伺服器。
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com fail_timeout=5s slow_start=30s;
server backend3.example.com resolve;
server backend4.example.com service=http resolve;
server backup1.example.com backup;
server backup2.example.com backup;
}
serverserver模組配置是http模組中的一個子模組,用來定義一個虛擬訪問主機。
server {
listen 80;
server_name localhost nginx_ip;
root /nginx/www;
index index.php index.html index.html;
charset utf-8;
access_log logs/access.log;
error_log logs/error.log;
}
locationlocation模組配置在路由訪問資訊配置中關聯到反向代理、負載均衡等等各項功能。
語法規則: location [=|~|~*|^~] /uri/ { … }
多個location優先順序:首先匹配 =,其次匹配^~, 其次是按檔案中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,停止匹配,按當前匹配規則處理請求。
location / {
root /nginx/www;
index index.php index.html index.htm;
}
location ^~ /test {
proxy_pass http://backend;
proxy_redirect off;
proxy_set_header Host $host;
}
location /:表示匹配訪問根目錄。
root:用於指定訪問根目錄時,訪問虛擬主機的web目錄。
index:在不指定訪問具體資源時,預設展示的資原始檔列表。
正春華枝俏,待秋實果茂,與君共勉。
-
3 # 創新炎黃
真要把nginx的配置講透,可以寫本書。nginx與很多工具配合可以做成很酷的產品!
其它慢慢寫……
-
4 # IT講壇
nginx是一款高效能的web和反向代理伺服器,這裡預設題主已經安裝好了nginx下面直接講解如何配置:
進入到安裝目錄:
cd /usr/local/nginx/conf
修改前最好備份下:
cp nginx.conf nginx.conf.20181121
修改配置檔案
vi nginx.conf
以下是完整的配置截圖
解釋:
我這裡模擬的是兩個目錄,你可以將你的專案分別放到這2個目錄進行訪問。
我這裡是有域名的,一級和二級域名,將你事先寫好的2個專案,或則只是一個簡單的index.html放入到上面對應的目錄下,/var/www/html2或則/var/www/app
接下來只需要重啟即可;
/usr/local/nginx/sbin/nginx -s reload
然後再您的瀏覽器裡面直接輸入域名即可訪問(http請求預設是80埠,所以這裡不用新增埠號就可以直接訪問。當然了,你埠號改成8082,然後域名或ip加上:8082也是可以直接訪問的。)
我寫過一個專門的文章nginx配置,建議題主去看下。
-
5 # pocket
先簡單介紹一下nginx,nginx到底是什麼?
Nginx ("engine x") 是一個開源的,支援高效能、高併發的 Web 服務和代理服務軟體。它是由俄羅斯人 Igor Sysoev 開發的,最初被應用在俄羅斯的大型網站 www.rambler.ru 上。後來作者將原始碼以類 BSD 許可的形式開源出來供全球使用。
Nginx 的官方介紹見 http://nginx.org/en/Nginx
Nginx整體配置介紹
在瞭解具體的Nginx配置項之前我們需要對於Nginx配置檔案的構成有所概念,一般來說,Nginx配置檔案會由如下幾個部分構成:
在上述配置中我們可以看出,Nginx配置檔案由以下幾個部分構成:
全域性塊:配置影響nginx全域性的指令。一般有執行nginx伺服器的使用者組,nginx程序pid存放路徑,日誌存放路徑,配置檔案引入,允許生成worker process數等。events塊:配置影響nginx伺服器或與使用者的網路連線。有每個程序的最大連線數,選取哪種事件驅動模型處理連線請求,是否允許同時接受多個網路連線,開啟多個網路連線序列化等。
http塊:可以巢狀多個server,配置代理,快取,日誌定義等絕大多數功能和第三方模組的配置。如檔案引入,mime-type定義,日誌自定義,是否使用sendfile傳輸檔案,連線超時時間,單連線請求數等。
server塊:配置虛擬主機的相關引數,一個http中可以有多個server。
location塊:配置請求的路由,以及各種頁面的處理情況。
Nginx配置檔案nginx.conf詳解
如圖:
為了方便複製,貼出程式碼,如下:
# 定義 Nginx 執行的使用者和使用者組,預設由 nobody 賬號執行, windows 下面可以註釋掉。 user www www;# 工作程序:數目。根據硬體調整,通常等於CPU數量。worker_processes 1;# 全域性錯誤日誌定義型別,[ debug | info | notice | warn | error | crit ]error_log /var/log/nginx/error.log info;# 程序檔案,windows 底下可以註釋掉pid /var/run/nginx.pid;# 一個nginx程序開啟的最多檔案描述符(控制代碼)數目,理論值應該是最多開啟檔案數(系統的值ulimit -n)與nginx程序數相除,# 但是nginx分配請求並不均勻,所以建議與ulimit -n的值保持一致。worker_rlimit_nofile 65535;# events塊events { #每個工作程序的最大連線數量,每個程序允許的最多連線數,理論上每臺nginx伺服器的最大連線數為。worker_processes*worker_connections worker_connections 1024;}# http模組http { # 副檔名與檔案型別對映表 include mime.types; # 預設檔案型別 default_type application/octet-stream; # 日誌格式 #log_format main "$remote_addr - $remote_user [$time_local] "$request" " # "$status $body_bytes_sent "$http_referer" " # ""$http_user_agent" "$http_x_forwarded_for""; # 日誌檔案路徑及所用的日誌格式 #access_log logs/access.log main; # 允許sendfile方式傳輸檔案,預設為off,可以在http塊,server塊,location塊。 sendfile on; #tcp_nopush on; # 連線超時時間,預設為75s,可以在http,server,location塊。 #keepalive_timeout 0; keepalive_timeout 65; # gzip壓縮相關配置 #gzip on; gzip on; # 開啟gzip壓縮傳輸 gzip_min_length 1k; #最小壓縮檔案大小 gzip_buffers 4 32k; # 壓縮快取區 gzip_http_version 1.1; # 壓縮版本 gzip_comp_level 2; # 壓縮級別 gzip_types text/plain application/x-javascript text/css application/xml; # 壓縮檔案型別 gzip_vary on; gzip_disable "MSIE [1-6]."; # 儲存伺服器名字的hash表的大小 server_names_hash_bucket_size 128; # 設定透過nginx上傳檔案的大小 client_max_body_size 100m; # 客戶端請求頭部的緩衝區大小。 client_header_buffer_size 256k; # 客戶請求頭緩衝大小。nginx預設會用client_header_buffer_size這個buffer來讀取header值,如果header過大,它會使用large_client_header_buffers來讀取。 large_client_header_buffers 4 256k; # 代理頭部資訊設定,將代理伺服器收到的使用者的資訊傳到真實伺服器上 proxy_set_header Host $host:$server_port; proxy_set_header X-real-ip $remote_addr; #proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 虛擬主機 server { # 監聽埠 listen 8088; # 監聽地址 server_name t1.sgl.com; # 請求地址location location / { # 請求轉向到代理伺服器 proxy_pass http://127.0.0.1:8080; } location /admin/user_toIndexPage.do { # 超時時間 proxy_read_timeout 300; proxy_pass http://127.0.0.1:8080; } location /wechat/ { proxy_pass http://127.0.0.1:8081; } location /new/ { proxy_pass http://127.0.0.1:8081; } } }常用的幾個內建變數
$remote_addr 與 $http_x_forwarded_for 用以記錄客戶端的ip地址;$remote_user :用來記錄客戶端使用者名稱稱;$time_local : 用來記錄訪問時間與時區;$request : 用來記錄請求的url與http協議;$status : 用來記錄請求狀態;成功是200;$body_bytes_s ent :記錄傳送給客戶端檔案主體內容大小;$http_referer :用來記錄從那個頁面連結訪問過來的;$http_user_agent :記錄客戶端瀏覽器的相關資訊;關於nginx重新載入配置、平滑升級參考我的部落格
nginx啟動、重啟、重新載入配置檔案和平滑升級: (
https://blog.csdn.net/gnail_oug/article/details/52754491)
nginx的location解析過程介紹: (https://blog.csdn.net/gnail_oug/article/details/53236898)
nginx的gzip壓縮功能引數介紹: (https://blog.csdn.net/gnail_oug/article/details/53246026)
希望以上內容能夠幫助你理解nginx配置。
回覆列表
nginx的代理形式,及配置檔案寫法,多種多樣,但是應用最常見的主要是做用於lnmp中的nginx配置,而在中國php中thinkphp框架又是應用最廣的框架,所以我主要講講linux+thinkphp+nginx+mysql中nginx.conf是如何配置的,如圖!一般只要配置這幾個地方就行了!