查看nginx編譯時參數的設定 使用nginx -V命令查看 可以使用nginx -h命令查看命令幫助 配置文件中將worker process綁定到cpu的特定內核上, vim /etc/nginx/nginx.conf 註意worker_cpu_affinity這個參數是對cpu多核的支持,上面 ...
Nginx是使用c語言編寫的,查看nginx編譯時參數的設定 使用nginx -V命令查看
可以使用nginx -h命令查看命令幫助
配置文件中將worker process綁定到cpu的特定內核上, vim /etc/nginx/nginx.conf
註意worker_cpu_affinity這個參數是對cpu多核的支持,上面表示4個process分別綁定到cpu內核的第1個 第2個 第1個 第2個(這個cpu只有兩個內核)
如果有4個內核就這樣設定
以此內推 8,16... 這樣做可以更好的利用系統資源(不過要註意了,其中一個內核壞掉,很可能是影響nginx性能的元凶)
配置文件中worker_rlimit_nofile這個參數是設定單個worker進程能最多打開多少個文件描述符(應該和ulimit -n的值保持一致,因為nginx對用戶請求的回答分配到各個worker進程有時是不均衡的),不過像nginx和haproxy這類服務已經會根據自身的需要自動調整了worker_rlimit_nofile了
worker_priority這個參數是設置worker process的進程優先順序的 範圍為[-20 19]數值越小,優先順序越高, 可以使用ps axo comm,pid,nice命令查看nginx進程優先順序(nice值)
補充:當各個進程運行時,每個進程會在cpu上來回切換運行直到各個進程完成任務,當一個進程在cpu上運行一定時間後(單位是ms),cpu會在等待的各個進程隊列中調度,優先順序越高的隊列就會被cpu優先調度,如此這些優先順序高的進程對cpu的使用越大
use epoll這個參數不必定義,nginx會自動選擇。
定義一臺虛擬主機最簡單的方式
root指定根文件路徑,server_name指定伺服器主機名,listen參數後面的格式為 IP:PORT,此處指定為監聽所有網卡地址的80埠, server_name後面可跟多個主機名(名稱可以使用通配符和正則表達式)
當在 listen 80 後面添加default_server時,在瀏覽器中輸入ip地址,預設就會訪問到該虛擬主機,當其它虛擬主機不能被請求到內容時使用預設的虛擬主機返回內容
location只能放置於server上下文中,location的配置說明
上面的定義,訪問www.c.com/images/1.jpg-->/data/imgs/images這個目錄下尋找1.jpg文件
上面的定義,訪問www.c.com/images/1.jpg-->/data/imgs這個目錄下找1.jpg文件,不過由於該虛擬主機沒有定義root,當訪問www.c.com會被重定向到default server上,所以root別忘記定義
index可以用在location,server,http中,設定預設搜索主頁
在虛擬主機中定義404頁,root選項必須有
為指定的uri配置訪問控制
為指定的uri提供認證功能
auth_basic 是取名字,auth_basic_user_file是指定保存用戶文件的路徑,此文件要藉助httpd的htpasswd命令創建,因此還得下載httpd
yum -y install httpd
創建/etc/nginx/.passwd
-c 在頭次創建該文件時需添加, -m 指定使用md5加密 tom是創建的用戶
stub_status這個參數是nginx的web監控頁,在nginx -V 中看到了--with-http_stub_status_module這個選項才能使用此功能
註意上面的location後面的status後面如果加了/則在瀏覽器中也必須加/,否則會找不到資源
active connections 當前活動連接數,包含了等待伺服器發送response的連接
accepts 伺服器總共已經接受的連接數量
handled 伺服器總共已經處理的連接數,通常accepts和handled是相等的,如果不相等則可能是worker_connections受到了限制,應調大該值,worker_connection定義的是單個worker進程所能處理的最大客戶端請求數
requests 客戶端已經發起過的總請求數,requests應該大於accepts,因為一次連接上客戶端可以請求多個資源,但關閉了keepalive_timeout功能就會使兩者相等了
reading 有多少連接數中nginx正在讀取request header
writing 有多少連接數中nginx正在構建response給請求的客戶端
waiting 連接已建立,但客戶端還沒發出請求的數量