Nginx 主配置文件 /etc/nginx/nginx.conf 是一個純文本類型的文件,整個配置文件是以區(qū)塊的形式組織,通常每一個區(qū)塊以一對大括號{}來表示開始與結(jié)束。
提示:若編譯安裝則 nginx.conf 位于編譯時所指定目錄。
全局配置部分用來配置對整個 server 都有效的參數(shù)。主要會設(shè)置一些影響 nginx 服務(wù)器整體運(yùn)行的配置指令,主要包括配置運(yùn)行 Nginx 服務(wù)器的用戶(組)、允許生成的 worker process 數(shù),進(jìn)程 PID 存放路徑、日志存放路徑和類型以 及配置文件的引入等。 示例:
#如下為全局Main配置:
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;
events 塊涉及的指令主要影響 Nginx 服務(wù)器與用戶的網(wǎng)絡(luò)連接,常用的設(shè)置包括是否開啟對多 worker process 下的網(wǎng)絡(luò)連接進(jìn)行序列化,是否允許同時接收多個網(wǎng)絡(luò)連接,選取哪種事件驅(qū)動模型來處理連接請求,每個 worker process 可以同時支持的最大連接數(shù)等。
#如下為Event配置:
events {
worker_connections 1024;
}
http 全局塊配置的指令包括文件引入、MIME-TYPE 定義、日志自定義、連接超時時間、單鏈接請求數(shù)上限等。
#如下為http配置:
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
提示:通常 Server 配置在獨立的/etc/nginx/conf.d/*.conf中,通過引用的方式調(diào)用,如下/etc/nginx/conf.d/default.conf:
Server 塊也被叫做“虛擬主機(jī)”部分,它描述的是一組根據(jù)不同 server_name 指令邏輯分割的資源,這些虛擬服務(wù)器響應(yīng) HTTP 請求,因此都包含在 http 部分。最常見的配置是本虛擬機(jī)主機(jī)的監(jiān)聽配置和本虛擬主機(jī)的名稱或 IP 配置。一個 server 塊可以配置多個 location 塊。location 匹配規(guī)則參考
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
user nginx; #進(jìn)程用戶 worker_processes 1; #工作進(jìn)程,配合和CPU個數(shù)保持一致 error_log /var/log/nginx/error.log warn; #錯誤日志路徑及級別 pid /var/run/nginx.pid; #Nginx服務(wù)啟動的pid
events {
worker_connections 1024; #每個worker進(jìn)程支持的最大連接數(shù)
use epoll; #內(nèi)核模型,select、poll、epoll
}
http {
include /etc/nginx/mime.types; #指定在當(dāng)前文件中包含另一個文件的指令
default_type application/octet-stream; #指定默認(rèn)處理的文件類型可以是二進(jìn)制
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 /var/log/nginx/access.log main; #訪問日志
sendfile on; #優(yōu)化靜態(tài)資源
#tcp_nopush on; #nginx不要緩存數(shù)據(jù),而是一段一段發(fā)送
keepalive_timeout 65; #給客戶端分配連接超時時間,服務(wù)器會在這個時間過后關(guān)閉連接。
#gzip on; #壓縮
server {
listen 80; #監(jiān)聽端口,默認(rèn)80
server_name localhost; #提供服務(wù)的域名或主機(jī)名
#charset koi8-r;
#access_log logs/host.access.log main;
location / { #控制網(wǎng)站訪問路徑
root /usr/share/nginx/html; #存放網(wǎng)站的路徑
index index.html index.htm; #默認(rèn)訪問的首頁
}
#error_page 404 /404.html; #錯誤頁面
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html; #定義請求錯誤,指定錯誤代碼
location = /50x.html { #錯誤代碼重定向到新的location
root html;
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server { #server段配置
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server { #server段配置
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key; #SSL證書配置
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
提示:index指令中列出多個文件名,Nginx 按指定的順序搜索文件并返回它找到的第一個文件。
在默認(rèn)虛擬機(jī) default.conf 基礎(chǔ)上新建虛擬機(jī)。
[root@nginx ~]# vi /etc/nginx/conf.d/mysite.conf
server {
server_name www.jixiangtaizi.com.cn;
location / {
root /usr/share/nginx/base;
index index.html;
}
}
[root@cainiaoplus ~]# mkdir -p /usr/share/nginx/base
[root@cainiaoplus ~]# echo '<h1>cainiaoplus</h1>' > /usr/share/nginx/base/index.html
[root@cainiaoplus ~]# nginx -t -c /etc/nginx/nginx.conf #檢查配置文件
[root@cainiaoplus ~]# nginx -s reload #重載配置文件
瀏覽器訪問:www.jixiangtaizi.com.cn,可以輸出 cainiaoplus 。
[root@nginx01 ~]# vi /etc/nginx/conf.d/mystie.conf
server {
server_name www.jixiangtaizi.com.cn;
error_page 404 403 500 502 503 504 /error.html; #配置錯誤頁
location / {
root /usr/share/nginx/base;
index index.html;
}
}
[root@cainiaoplus ~]# echo '<h1>Error</h1>' > /usr/share/nginx/error.html
[root@cainiaoplus ~]# nginx -t -c /etc/nginx/nginx.conf #檢查配置文件
[root@cainiaoplus ~]# nginx -s reload #重載配置文件
瀏覽器訪問任何一個不存在的頁面,將返回自定義錯誤 html。
location ~/\.ht {
deny all;
}
location ~ ^/(picture|move)/ {
deny all;
break;
}
location ~ ^/data {
deny all;
}
location /imxhy/images/ {
deny all;
}
root /usr/share/nginx/rewrite/;
allow 208.97.167.194;
allow 222.33.1.2;
allow 231.152.49.4;
deny all;