搜尋
首頁後端開發php教程Nginx 設定檔詳解

Nginx 設定檔詳解

Aug 08, 2016 am 09:31 AM
headerhttpproxyrequestserver

Nginx 設定檔詳情


#

用戶


#工作進程,根據硬體調整,大於等於

cpu

核數

error_log logs/nginx_error.log crit;


#錯誤日誌

pid logs/nginx.pid;

#pid


放置的位置

worker_rlimit_nofile 204800;

#

指定進程可以打開的最大描述符


應該是最多開啟文

件數(

ulimit -n nginx分配請求並不是那麼均勻,所以最好與ulimit -n 

的值保持一致。

現在在linux 2.6

worker_rlimit_nofile

就對應應該填入 65535這是因為nginx ,總並發量達到

3-4

萬時就有進程可能超過10240 錯誤。

{ use epoll; I/O 模型


補充說明

:

相類,

nginx針對不同的操作系統,有不同的事件模式


A

Select

poll

屬於標準事件模型,如果目前系統不存在更有效的方法,nginx會或nginx或c

B

)高效事件模型使用於FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 

和 MacOS X.

使用雙處理器的MacOS X系統使用kqueue可能會造成內核崩潰。

Epoll:使用於Linux

/dev/poll

:使用於 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+Tru64 UNIX 5.1A+Tru64 UNIX 5.1A+Tru64 UNIX 5.1A+

EventportEventport 10. 

為了防止出現內核崩潰的問題, 有必要安裝安全補丁



worker_connections 204800;

# cpu跑到100%就行

伺服器的最大連接數為worker_processes*worker_connections


live_timeout 60;


keepalive

超時時間。

_


客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求頭的大小不會超過

1k

,但由於一般系統分頁都要大於
1k

,但由於一般系統分頁都要大於1k

這裡設定為分頁大小。 分頁大小可用指令getconf PAGESIZE 

getconf PAGESIZE 取得。

[root@web001 ~]# getconf PAGESIZE

4096

但也有

client_header_buffer_size超過4k

_含

該值必須設定為「系統分頁大小」的整數倍。

這個將為開啟檔案指定緩存,預設是沒有啟用的,
max

指定快取數量,建議和開啟檔案數一致,

inactive長時間文件沒被請求後刪除快取。


這個是指多長時間檢查一次快取的有效資訊。


open_file_cache


open_file_cache

open_file_cacheopen_file_cache

open_file_cache


open_file_cache

指令中的

inactive參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的,如上例,如果有一個文件在

inactive


時間內一次沒被使用,它將被移除。

}


設定http伺服器,利用它的反向代理功能提供負載平衡支援

http

include mime.types;

#

設定

mime me.type檔案定義 default_type application/octet-stream;🎼

'"$http_referer" "$http_user_agent" "$http_x_forwarded_for" $request_time $sent_http_x_cache_hit';

log_format log404 '$status [$time_local] $remote_addr $host$request_uri $sent_http_location';

$remote_addr

$http_x_forwarded_for

用以記錄客戶端的

ip $remote_user:用來記錄客戶端使用者名稱;$time_local

$time_local

用來記錄訪問時間與時區;

$request

: 用來記錄請求的url

http

$status : 用來記錄請求狀態;成功是200

_🜎

:記錄傳送給客戶端文件主體內容大小;$http_referer$http_referer

$http_user_agent :記錄客戶毒啊瀏覽器的相關資訊;

客戶的IP

位址了,透過

$remote_add$remote_add

iP

地址。反向代理伺服器在轉送請求的http頭資訊中,可以增加x_forwarded_for客戶端的請求的伺服器位址;access_log /dev/null; 用了log_format 指令設定了日誌格式之後,需要用access_log指令指定日誌檔案的存放路徑; /nginx/logs /access_log main;server_names_hash_bucket_size 128;

server_names_hash_bucket_size 128;

#保存伺服器名稱的hash server_names_hash_bucket_size所控制的。參數hash bucket size總是等於hash表的大小,並且是一路處理器快取大小的倍數。在減少了在記憶體中的訪問次數後,使在處理器中加速查找hash表鍵值成為可能。如果hash bucket size等於一路處理器快取的大小,那麼在查找鍵的時候,最壞的情況下在記憶體中查找的次數為2。第一次是確定儲存單元的位址,第二次是在儲存單元中尋找鍵 值。因此,如果Nginx給出需要增大hash max size 或 hash bucket size的提示,首要的就是增加前一個參數的大小.

client_header_buffer_size 4k;


客戶端請求頭部的緩衝區可以將這個尺寸

1k,不過由於一般系統分頁都要大於1k

,所以這裡設定為分頁大小。分頁大小可以用指令

getconf PAGESIZE取得。 large_client_o


客戶請求頭緩衝大小

nginx

預設會用client_header_buffer_size

這個buffer

來讀取header
header過大,它會使用large_client_header_buffers來讀取

如果設定過小

過大 會報400 錯誤nginx 400 bad request求行如果超過buffer,就會報 414錯誤(URI Too Long)nginx 頭部大小必須比其中一個
buffer
大,否則就會報400 (Bad Request)
open_file_cache max 102400 , location 這個指令指定快取是否啟用, 如果啟用,將記錄檔案以下資訊: ·開啟的檔案描述子

,大小資訊和修改時間

. ·存在的目錄資訊. ·在搜尋檔案過程中的錯誤訊息 --

, 參考

open_file_cache_errors指令選項

:·max

,最長使用過的檔案(LRU)會移除: open_file_cache max=1000 inactive=20s; open_ache_cache_valid 30 open_file_cache_errors on;

open_file_cache_errors
語法:open_語法 :open_file_cache_errors off 使用欄位:http, server, location 這個指令指定是否在搜尋一個檔案是記錄是否在搜尋一個檔案是記錄是否在搜尋一個檔案. open_file_cache_min_uses

.

預設值:open_file_cache_min_uses 1 

使用欄位

:http, server, location 這個指令指定了在一定的時間範圍內的指令使用的最小文件數,如 果實使用較大的值,檔案描述子在cache_open valid 語法:open_file_cache_valid time 預設值:open_file_cache_valid 60 使用欄位:http, server, location 這個指令指定了何時需要檢查open_file_cacheache

client_max_body_size 300m; nginx上傳檔案的大小


sendfile on; #sendfile指令指定 

nginx 是否呼叫

sendfile 函數(

zero copy 方式)來輸出文件,對於普通應用,必須設為on如果用來進行下載等應用磁碟

IO重負載應用,可設定為


off

,以平衡磁碟機off

uptime

tcp_nopush on;或使用此選項。 TCP_CORK的選項,此選項只在使用sendfile的時候使用#後端伺服器連接的超時時間_發起握手等待回應超時時間_

#

連接成功後_

等候後端伺服器回應時間_

其實已經進入後端的排隊中等待處理(也可以說是後端伺服器處理請求的時間)其實已經進入後端的排隊之中。 proxy_send_timeout 180; 就是在規定時間內後端伺服器必須傳完所有的資料


proxy_buffer_size 256k;

#設定從被代理伺服器讀取的第一部分應答的緩衝區大小,通常情況下這部分應答中包含一個小的應答頭,默認情況下這個值的大小為指令proxy_buffers中指定的一個緩衝區的大小,不過可以將其設定為更小

5

#

設定用於讀取應答(來自被代理伺服器)的緩衝區數目和大小,預設情況也為分頁大小,根據作業系統的差異可能是4k

4k

proxy_busy_buffers_size 256k;

proxy_temp_file_write_size 256k;


#設定在寫入proxy_temp_path

時資料的大小,預防一個工作進程在傳遞檔案時阻塞太長

proxy_temp_path /data0 /proxy_temp_dir;#proxy_temp_path
_cachekpache proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone =cache_one:200m inactive=1d max_size=30g;#設定記憶體快取空間大小為200MB 天沒有被存取的內容自動清除,硬碟快取空間大小為30GB

keepalive_timeout 120;keepalive_timeout 120;

keepalive超時時間。

tcp_nodelay on;

_s 如果把它設定為比較大的數值,例如

256k

,那麼,無論使用firefox
還是IE還是IEIE 的圖片,都很正常。如果註解該指令,使用預設的client_body_buffer_size設置,也就是作業系統頁面大小的兩倍,8k1 ,問題就出現了。 無論使用firefox4.0還是IE8.0 左右的圖片,都返回500 Internal Server Error錯誤proxy_intercept_ 表示使nginx阻止HTTP 應答代碼為400或更高的應答。

com  {

server 127.0 .0.1:8027;server

server 127.0.0.1:8029;


hash $request_uri;

nginx upstream

目前支援4

種方式的分配

每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。

2weight存取比率成正比,用於後端伺服器效能不均的情況。
例如:upstream bakend {server 192.168.0.14 weight=10;server 192.168.0.155%;


2

ip_hash每個請求按訪問

ipip
session的問題。 例如:upstream bakend {ip_hash;server 192.168.0.14:88;

3

fair
(第三方)按後端伺服器的回應時間來分配請求,回應時間短的優先分配。

upstream backend {server1;

server server2;fair;} 4url_hash
(第三方)



按訪問
url

url

定向到同一個後端伺服器,後端伺服器為快取時比較有效。 例:在upstream

中加入 語句中不能寫入

weight等其他的參數,hash_method是使用的hash演算法hash演算法

squid1:3128;

server squid2: 3128;hash $request_uri;hash_method crc32;} upstream bakend{# 定義負載平衡設備的Ip及設備狀態ip_hash;server 127.0.0.1:9090 7% 2;

server 127.0.0.1:6060;server 127.0.0.1:7070 backup;

}
在需要使用負載的}

在需要使用負載的 proxy_pass http://bakend /;

每個設備的狀態設定為

:1.down

:暫時不參與負載

2.weight預設為1.weight越大,負載的權重越大。 3.max_fails
:允許請求失敗的次數預設為
1.
當超過最大次數

up🜎 4. fail_timeout:max_fails
次失敗後,暫停的時間。
5.backup: 其它所有的非backup
機器
down

機器

down請 機器。所以這台機器壓力會最輕。
nginx支援同時設定多組的負載平衡,用來給不用的
支援同時設定多組的負載平衡,用來給不用的來使用

client_body_in_file_only設定為On  post過來的資料記錄到檔案中用來做debugclient_body_temp_path33355%
的目錄可以設定最多33
location

URL進行配對

.可以進行配對.可以進行新重定向 負載平衡


#

設定虛擬機

{

#設定監聽埠

server_name image.***.com;

location ~* .(mp3|exe)$ {

#

結尾的位址進行負載平衡

proxy_pass http://img_relay

#設定被代理伺服器的連接埠或套接字,以及

URL

_

proxy_set_header X-Real-IP $remote_addr;

_fidward_fid; # 以上三行,目的是將代理伺服器收到的用戶的資訊傳到真實伺服器上

}

location /face {

if ($http_user_agent ~* "x") {if ($http_user_agent ~* "x") {

rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect;

proxy_pass http:// img_relay

$request_uri;

proxy_set_header X-Real-IP $remote_addr ;

proxy_set_header X-Forwarded-For $proxy_add_xforwarded_forforfor;

error_page 404 502 = @fetch;

}

access_log /data/logs/face. log log404;

#

rewrite ^(.* )$ http://211.151.188.190:8080/face.jpg redirect;

location /image {

*

重寫^(.*)$ http://211.151.188.190:8080/face.jpg 重定向; }

proxy_pass http://

img_relay

proxy_set_header 主機$host;

proxy_set_header X-真實IP $remote_addr;

_pro er X-轉寄-For $proxy_add_x_forwarded_for;

error_page 404 502 = @fetch;

位置@fetch {

access_log /data/logs/image.log log404; 1.188.190:8080/ face. jpg 重新導向;

}

伺服器

聽80;

伺服器名稱*.***.com *.***.cn;

* exe )$ {

proxy_pass http://img_relay$request_uri;

pr oxy_set_header 主機$host;

proxy_set_header X-真實IP $remote_addr;

$proxy_add_x_forwarded_for ;

}

位置/ {*

重寫^(.*)$ http://i1.***img.com/help/noimg.gif 重新導向;

proxy_pass http://img_relay$request_uri;

_

proxy_set_header X-真實IP $ remote_addr; #error_第404 頁http://i1.***img.com/help/ noimg.gif;

}

access_log /data/logs/baijiaqi.log log404;

重寫^( .*)$ http://i1. ***img.com/help/noimg.gif 重定向; }

#access_log off;

伺服器

聽80;

server_name *.***img.com;

~* .(mp3|exe)$ {

proxy_pass http://img_relay$request_uri;

_pro

proxy_set_header X-真實IP $re proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

地點/ {


if ($http_user_agent ~* "xnp") {

重寫^(.*)$ gif;

}

g_relay$request_uri;

proxy_set_header 主機$host;

_p

proxy_set_head呃X-轉發-對於$proxy_add_x_forwarded_for;

#error_page 404 http://i1.***img.com/H#error_page 404 http://i1.***img.com/help/nomcom/hel

error_page 404 = @fetch;

} log off;

位置@fetch {

access_log /data/logs/b

重寫^(. * )$ http://i1.***img。 com/help/noimg.gif }

伺服器

伺服器

聽8080;

server_name ngx-ha.***img.com;

位置/ {

stub_status 開啟;

}

80;

伺服器名稱imgsrc1 .***.net ;

rootroot

伺服器{

聽80; ;

# access_log /usr /local/nginx/logs/access_log main;

位置/ {

重寫^( .*)$ www。 ***.com/ ;

}

}

伺服器{

server_name *** *****.com w。

# access_log /usr/local/nginx/logs/access_log main;

重寫^(.*)$ http://www.********.com/;

}

聽80;

server_name ******.com;

💎

地點/ {

.

}



位置 /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";

#設定查看NginxNginx


位置 ~ /.ht {否認所有;}

.htxxx 文件

註解:變數

core模組支援內建變量,他們的名字和

apache

的內建變數是一致的。

首先是說明客戶請求 $http_user_agent,$http_cookie 等等。

還有其他一些變數 此參數與請求行中的參數一致$content_length

$content_length th”

的值。

$content_type$content_type

的值 $document_root的值

$document_uri$uri

$host與請求頭部中「值或是request 到達的server的名字(沒有 行)一樣 $limit_rate

允許限制的連線速率

等同於request

method 或「POST」 $remote_addr $remote_port客戶端

port

ngx_http_auth_basic_module

認證

$request_filename$request_filename$request_filename

aliasURI request組合而成

$request_uri含有參數的完整的初始URI $args一樣

$sheeme http

)盡在要求是評估例如

Rewrite ^(.+)$ $sheme://example.com$; _protocol 等同於

request

的協議,使用「 HTTP/

$server_addr request

ip

,一般取得此變數的值的目的是進行系統呼叫。為了避免系統調用,有必要在

listen

指令中指明

指令中指明指令中指明指令中指明 bind 參數。 $server_name

$server_port請求到達的伺服器的連接埠號碼

$uri等同於當前等同於當前 URI,可不同於初始值,例如內部重定向時或使用index



nginx

中文維基百科 http://wiki.nginx.org/NginxChs

以上就介紹了Nginx 設定檔詳解,包括了方面的內容,希望對PHP教學有興趣的朋友有所幫助。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP的目的:構建動態網站PHP的目的:構建動態網站Apr 15, 2025 am 12:18 AM

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP:處理數據庫和服務器端邏輯PHP:處理數據庫和服務器端邏輯Apr 15, 2025 am 12:15 AM

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。

您如何防止PHP中的SQL注入? (準備的陳述,PDO)您如何防止PHP中的SQL注入? (準備的陳述,PDO)Apr 15, 2025 am 12:15 AM

在PHP中使用預處理語句和PDO可以有效防範SQL注入攻擊。 1)使用PDO連接數據庫並設置錯誤模式。 2)通過prepare方法創建預處理語句,使用佔位符和execute方法傳遞數據。 3)處理查詢結果並確保代碼的安全性和性能。

PHP和Python:代碼示例和比較PHP和Python:代碼示例和比較Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP行動:現實世界中的示例和應用程序PHP行動:現實世界中的示例和應用程序Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:輕鬆創建交互式Web內容PHP:輕鬆創建交互式Web內容Apr 14, 2025 am 12:15 AM

PHP可以輕鬆創建互動網頁內容。 1)通過嵌入HTML動態生成內容,根據用戶輸入或數據庫數據實時展示。 2)處理表單提交並生成動態輸出,確保使用htmlspecialchars防XSS。 3)結合MySQL創建用戶註冊系統,使用password_hash和預處理語句增強安全性。掌握這些技巧將提升Web開發效率。

PHP和Python:比較兩種流行的編程語言PHP和Python:比較兩種流行的編程語言Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP的持久相關性:它還活著嗎?PHP的持久相關性:它還活著嗎?Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具