柚子快報(bào)邀請(qǐng)碼778899分享:運(yùn)維 Nginx服務(wù)配置
柚子快報(bào)邀請(qǐng)碼778899分享:運(yùn)維 Nginx服務(wù)配置
一、Nginx服務(wù)的主配置文件nginx.conf
vim /usr/local/nginx/conf/nginx.conf?
全局塊:全局配置,對(duì)全局生效;events塊:配置影響 Nginx 服務(wù)器與用戶的網(wǎng)絡(luò)連接;http塊:配置代理,緩存,日志定義等絕大多數(shù)功能和第三方模塊的配置;server塊:配置虛擬主機(jī)的相關(guān)參數(shù),一個(gè) http 塊中可以有多個(gè) server 塊;location塊:用于配置匹配的 uri ;upstream:配置后端服務(wù)器具體地址,負(fù)載均衡配置不可或缺的部分。
?二、配置文件
1、全局配置
vim /usr/local/nginx/conf/nginx.conf?
?user nobody;? ? ? ? ? ? ? ? ? ? ? ? #運(yùn)行用戶,若編譯時(shí)未指定則默認(rèn)為 nobodyworker_processes 1; ?? ??? ??? ?#工作進(jìn)程數(shù)量,一般設(shè)置為和 CPU 核數(shù)一樣;設(shè)置為auto,nginx將會(huì)自己獲取這個(gè)數(shù)值error_log logs/error.log; ?? ??? ?#錯(cuò)誤日志文件的位置pid logs/nginx.pid;? ? ? ? ? ? ? ? ? #PID 文件的位置worker_rlimit_nofile 65535;?? ??? ?#指定 worker 子進(jìn)程可以打開的最大文件句柄數(shù),默認(rèn)為1024
?2、I/O 事件配置
events { ? ? use epoll; ?? ??? ?#使用 epoll I/O模型,2.6及以上版本的系統(tǒng)內(nèi)核,使用epoll模型可以提高性能 ? ? worker_connections 65535; ?? ?#每個(gè) worker 子進(jìn)程能夠處理的最大并發(fā)連接數(shù) ? ? multi_accept on;? ???#是否一次性將監(jiān)聽到的連接全接收進(jìn)來(lái),默認(rèn)為off,關(guān)閉時(shí)一次接收一條連接 ? ? accept_mutex on; ? #默認(rèn)為on,開啟時(shí)表示以串行方式接入新連接,否則將通報(bào)給所有worker。這可能會(huì)浪費(fèi)資源并產(chǎn)生不可預(yù)計(jì)的后果,例如驚群?jiǎn)栴} }
設(shè)置Nginx最大連接數(shù)
注意點(diǎn):不僅要在全局配置中通過(guò)work_rlimit_nofile命令配置進(jìn)程能打開的文件數(shù),還要在I/O配置中通過(guò)worker_connections命令配置一個(gè)進(jìn)程的最大連接數(shù)。
首先可以通過(guò)ulimit -a 查看系統(tǒng)最大能夠打開的文件數(shù)量,此時(shí)為1024個(gè)
vim /etc/security/limits.conf ?在其中永久配置
相關(guān)配置介紹:?
?在配置文件中加上軟硬限制并重啟即可
重啟并查看?
?vim /usr/local/nginx/conf/nginx.conf
工作進(jìn)程數(shù)×進(jìn)程連接數(shù)=Nginx并發(fā)數(shù)
驗(yàn)證結(jié)果
?3、http配置
http {
?? ?##文件擴(kuò)展名與文件類型映射表
? ? include ? ? ? mime.types;
?? ?##默認(rèn)文件類型
? ? default_type ?application/octet-stream;
?? ?##日志格式設(shè)定
? ? #log_format ?main ?'$remote_addr - $remote_user [$time_local] "$request" '
? ? # ? ? ? ? ? ? ? ? ?'$status $body_bytes_sent "$http_referer" '
? ? # ? ? ? ? ? ? ? ? ?'"$http_user_agent" "$http_x_forwarded_for"';
?? ?##訪問(wèn)日志位置
? ? #access_log ?logs/access.log ?main;
?? ?##開啟高效的文件傳輸模式
? ? sendfile ? ? ? ?on;
?? ?##開啟tcp_nopush和tcp_nodelay用于防止網(wǎng)絡(luò)阻塞
? ? tcp_nopush ? ? on;
? ? tcp_nodelay ? ?on;
?? ?##連接保持超時(shí)時(shí)間,單位是秒
? ? #keepalive_timeout ?0;
? ? keepalive_timeout ?65;
?? ?##gzip模塊設(shè)置,設(shè)置是否開啟gzip壓縮輸出
? ? #gzip ?on;
?4、Web 服務(wù)的監(jiān)聽配置 ?
server {
?? ??? ?##監(jiān)聽地址及端口
?? ??? ?listen 80;?
?? ??? ?##站點(diǎn)域名,可以有多個(gè),用空格隔開
?? ??? ?server_name www.kgc.com;
?? ??? ?##網(wǎng)頁(yè)的默認(rèn)字符集
?? ??? ?charset utf-8;
?? ??? ?##根目錄配置
?? ??? ?location / {
?? ??? ??? ?##網(wǎng)站根目錄的位置/usr/local/nginx/html
?? ??? ??? ?root html;
?? ??? ??? ?##默認(rèn)首頁(yè)文件名
?? ??? ??? ?index index.html index.php;
?? ??? ?}
?? ??? ?##內(nèi)部錯(cuò)誤的反饋?lái)?yè)面
?? ??? ?error_page 500 502 503 504 /50x.html;
?? ??? ?##錯(cuò)誤頁(yè)面配置
?? ??? ?location = /50x.html {
?? ??? ??? ?root html;
?? ??? ?}
?? ?}
}
5、日志格式設(shè)定:
$remote_addr與$http_x_forwarded_for用以記錄客戶端的ip地址; $remote_user:用來(lái)記錄客戶端用戶名稱; $time_local: 用來(lái)記錄訪問(wèn)時(shí)間與時(shí)區(qū); $request: 用來(lái)記錄請(qǐng)求的url與http協(xié)議; $status: 用來(lái)記錄請(qǐng)求狀態(tài);成功是200, $body_bytes_sent :記錄發(fā)送給客戶端文件主體內(nèi)容大小; $http_referer:用來(lái)記錄從哪個(gè)頁(yè)面鏈接訪問(wèn)過(guò)來(lái)的; $http_user_agent:記錄客戶瀏覽器的相關(guān)信息; 通常web服務(wù)器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過(guò)$remote_add拿到的IP地址是反向代理服務(wù)器的iP地址。反向代理服務(wù)器在轉(zhuǎn)發(fā)請(qǐng)求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來(lái)客戶端的請(qǐng)求的服務(wù)器地址。
補(bǔ)充:location常見配置指令,root、alias、proxy_pass
?nginx 的 root 和 alias 指定路徑的區(qū)別
root(根目錄) location /abc { ? ? root /var/www; } 處理方式: root路徑+location路徑 ? ?http://192.168.80.20/abc/xy101/scj.html ?--> ?/var/www/abc/xy101/scj.html
alias(別名目錄、虛擬目錄) location /abc { ? ? alias /var/www; ? ? ? ? ? ? ?? } 處理方式: alias路徑替換location路徑 ?http://192.168.80.20/abc/xy101/scj.html ?--> ? /var/www/xy101/scj.html ?
?三、?訪問(wèn)狀態(tài)統(tǒng)計(jì)與控制
查看統(tǒng)計(jì)配置的相關(guān)模塊
cat /opt/nginx-1.22.0/auto/options | grep YES ? #查看 nginx 已安裝的所有模塊
[root@localhost ~]# cd /opt/
[root@localhost opt]# ls
apache nginx-1.24.0 nginx-1.24.0.tar.gz nginx-1.26.1 nginx-1.26.1.tar.gz
[root@localhost opt]# cd nginx-1.26.1/
[root@localhost nginx-1.26.1]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src
[root@localhost nginx-1.26.1]# cd auto/
[root@localhost auto]# ls
cc endianness have headers init lib module nohave os stubs threads unix
define feature have_headers include install make modules options sources summary types
[root@localhost auto]# cat options | grep YES
?修改主配置文件,添加訪問(wèn)狀態(tài)統(tǒng)計(jì)模塊
cd /usr/local/nginx/conf cp nginx.conf nginx.conf.bak
vim /usr/local/nginx/conf/nginx.conf?
??server {
? ? ? ? listen ? ? ? 80;
? ? ? ? server_name ?www.yang.com;
?
? ? ? ? charset utf-8;
?
? ? ? ? #access_log ?logs/host.access.log ?main;
?
? ? ? ? location / {
? ? ? ? ? ? root ? html;
? ? ? ? ? ? index ?index.html index.htm;
? ? ? ? }
? ? ? ? location /status {
? ? ? ? ? ? stub_status on;
? ? ? ? ? ? access_log off;
? ? ? ? }
重啟nginx服務(wù),訪問(wèn)測(cè)試
基于授權(quán)的訪問(wèn)控制
1、生成用戶密碼認(rèn)證文件?
yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db zhangsan
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db
2? 、修改主配置
vim /usr/local/nginx/conf/nginx.conf
server {
location / {
......
##添加認(rèn)證配置##
auth_basic "secret"; #設(shè)置密碼提示框文字信息
auth_basic_user_file /usr/local/nginx/passwd.db;
}
}
基于客戶端的訪問(wèn)控制
訪問(wèn)控制規(guī)則如下:
deny IP/IP 段:拒絕某個(gè) IP 或 IP 段的客戶端訪問(wèn)。 allow IP/IP 段:允許某個(gè) IP 或 IP 段的客戶端訪問(wèn)。 規(guī)則從上往下執(zhí)行,如匹配則停止,不再往下匹配。
vim /usr/local/nginx/conf/nginx.conf
......
server {
location / {
......
##添加控制規(guī)則##
allow 192.168.73.105; #允許訪問(wèn)的客戶端 IP
deny all; #拒絕其它IP客戶端訪問(wèn)
}
}
四、Nginx的虛擬主機(jī)設(shè)置
1、基于域名的虛擬主機(jī)?
server { ? ? server_name XXX; ? ? ? ? #指定不同的域名 }
2、?基于IP的虛擬主機(jī)
server { ? ? listen ?
3、基于端口的虛擬主機(jī)
server { ? ? listen ? IP:<端口>; ? ? ?#指定不同的端口 }
柚子快報(bào)邀請(qǐng)碼778899分享:運(yùn)維 Nginx服務(wù)配置
相關(guān)文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。