Nginx學習(二)----Nginx配置檔案詳解
Nginx配置檔案詳解
安裝完成後,輸入cd /usr/local/nginx/conf/,進入conf資料夾,通過vim nginx.conf命令,檢視nginx配置檔案,預設配置檔案如下所示:
補充學習地址:Nginx伺服器配置檔案nginx.conf例項詳解
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024 ;
}
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 on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#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 {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# 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;
# }
#}
}
配置檔案結構
nginx配置檔案主要由三塊組成 :全域性塊、 events塊 、http塊,http塊中包含http全域性塊和多個server塊,每個server塊中包含server全域性塊和多個location塊,採用就近原則生效
... #全域性塊
events { #events塊
...
}
http #http塊
{
... #http全域性塊
server #server塊
{
... #server全域性塊
location [PATTERN] #location塊
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全域性塊
}
- 全域性塊:配置影響nginx全域性的指令。一般有執行nginx伺服器的使用者組,nginx程序pid存放路徑,日誌存放路徑,配置檔案引入,允許生成worker process數等。
- events塊:配置影響nginx伺服器或與使用者的網路連線。有每個程序的最大連線數,選取哪種事件驅動模型處理連線請求,是否允許同時接受多個網路連線,開啟多個網路連線序列化等。
- http塊:可以巢狀多個server,配置代理,快取,日誌定義等絕大多數功能和第三方模組的配置。如檔案引入,mime-type定義,日誌自定義,是否使用sendfile傳輸檔案,連線超時時間,單連線請求數等。
- server塊:配置虛擬主機的相關引數,一個http中可以有多個server。
- location塊:配置請求的路由,以及各種頁面的處理情況。
補充三個配置檔案案例:
例一
user www www;
worker_processes 2;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 2048;
}
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 on;
# tcp_nopush on;
keepalive_timeout 65;
# gzip壓縮功能設定
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 6;
gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
# http_proxy 設定
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 75;
proxy_send_timeout 75;
proxy_read_timeout 75;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_temp_path /usr/local/nginx/proxy_temp 1 2;
# 設定負載均衡後臺伺服器列表
upstream backend {
#ip_hash;
server 192.168.10.100:8080 max_fails=2 fail_timeout=30s ;
server 192.168.10.101:8080 max_fails=2 fail_timeout=30s ;
}
# 很重要的虛擬主機配置
server {
listen 80;
server_name itoatest.example.com;
root /apps/oaapp;
charset utf-8;
access_log logs/host.access.log main;
#對 / 所有做負載均衡+反向代理
location / {
root /apps/oaapp;
index index.jsp index.html index.htm;
proxy_pass http://backend;
proxy_redirect off;
# 後端的Web伺服器可以通過X-Forwarded-For獲取使用者真實IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
#靜態檔案,nginx自己處理,不去backend請求tomcat
location ~* /download/ {
root /apps/oa/fs;
}
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{
root /apps/oaapp;
expires 7d;
}
location /nginx_status {
stub_status on;
access_log off;
allow 192.168.10.0/24;
deny all;
}
location ~ ^/(WEB-INF)/ {
deny all;
}
#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 {
root html;
}
}
## 其它虛擬主機,server 指令開始
}
例二:
#執行使用者
user nobody;
#啟動程序,通常設定成和cpu的數量相等
worker_processes 1;
#全域性錯誤日誌及PID檔案
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
#工作模式及連線數上限
events {
#epoll是多路複用IO(I/O Multiplexing)中的一種方式,
#僅用於linux2.6以上核心,可以大大提高nginx的效能
use epoll;
#單個後臺worker process程序的最大併發連結數
worker_connections 1024;
# 併發總數是 worker_processes 和 worker_connections 的乘積
# 即 max_clients = worker_processes * worker_connections
# 在設定了反向代理的情況下,max_clients = worker_processes * worker_connections / 4 為什麼
# 為什麼上面反向代理要除以4,應該說是一個經驗值
# 根據以上條件,正常情況下的Nginx Server可以應付的最大連線數為:4 * 8000 = 32000
# worker_connections 值的設定跟實體記憶體大小有關
# 因為併發受IO約束,max_clients的值須小於系統可以開啟的最大檔案數
# 而系統可以開啟的最大檔案數和記憶體大小成正比,一般1GB記憶體的機器上可以開啟的檔案數大約是10萬左右
# 我們來看看360M記憶體的VPS可以開啟的檔案控制代碼數是多少:
# $ cat /proc/sys/fs/file-max
# 輸出 34336
# 32000 < 34336,即併發連線總數小於系統可以開啟的檔案控制代碼總數,這樣就在作業系統可以承受的範圍之內
# 所以,worker_connections 的值需根據 worker_processes 程序數目和系統可以開啟的最大檔案總數進行適當地進行設定
# 使得併發總數小於作業系統可以開啟的最大檔案數目
# 其實質也就是根據主機的物理CPU和記憶體進行配置
# 當然,理論上的併發總數可能會和實際有所偏差,因為主機還有其他的工作程序需要消耗系統資源。
# ulimit -SHn 65535
}
http {
#設定mime型別,型別由mime.type檔案定義
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 指令指定 nginx 是否呼叫 sendfile 函式(zero copy 方式)來輸出檔案,
#對於普通應用,必須設為 on,
#如果用來進行下載等應用磁碟IO重負載應用,可設定為 off,
#以平衡磁碟與網路I/O處理速度,降低系統的uptime.
sendfile on;
#tcp_nopush on;
#連線超時時間
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
#開啟gzip壓縮
gzip on;
gzip_disable "MSIE [1-6].";
#設定請求緩衝
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;
#設定虛擬主機配置
server {
#偵聽80埠
listen 80;
#定義使用 www.nginx.cn訪問
server_name www.nginx.cn;
#定義伺服器的預設網站根目錄位置
root html;
#設定本虛擬主機的訪問日誌
access_log logs/nginx.access.log main;
#預設請求
location / {
#定義首頁索引檔案的名稱
index index.php index.html index.htm;
}
# 定義錯誤提示頁面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
#靜態檔案,nginx自己處理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
#過期30天,靜態檔案不怎麼更新,過期可以設大一點,
#如果頻繁更新,則可以設定得小一點。
expires 30d;
}
#PHP 指令碼請求全部轉發到 FastCGI處理. 使用FastCGI預設配置.
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#禁止訪問 .htxxx 檔案
location ~ /.ht {
deny all;
}
}
}
例三
user www www; #指定Nginx Worker程序執行使用者以及使用者組
worker_processes 2; #指定了Nginx要開啟的程序數,多核CPU指定和核數一樣多的程序數
pid logs/nginx.pid; #指定程序id的儲存檔案位置
worker_rlimit_nofile 65535; #指定單程序開啟檔案數,需與系統設定一致
events {
use epoll; #指定nginx工作模式,nginx主要的工作模式有select、poll、kqueue、epoll
其中select、poll是標準工作模式,kqueue、epoll為高效工作模式,epoll用在Linux系統中,而kqueue用在BSD系統中
worker_connections 65535;#指定單程序的最大連線數
}
HTTP部分
http {
include mime.types; #指定配置檔案所包含的檔案
default_type application/octet-stream; #指定預設型別為二進位制流,也就是當檔案型別未定義時使用這種方式,例如在沒有配置PHP環境時,Nginx是不予解析的,此時,用瀏覽器訪問PHP檔案就會出現下載視窗
log_format main '$remote_addr - $remote_user [$time_local] "$request" '#設定日誌格式
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';;
client_max_body_size 20m; #設定允許客戶端請求的最大的單個檔案位元組數
client_header_buffer_size 16k;#指定來自客戶端請求頭的headerbuffer大小,如果自定義了訊息頭或有更大的cookie,可以在這裡增加緩衝大小
large_client_header_buffers 4 32k;#指定客戶端請求中較大的訊息頭的快取最大數量和大小,4為個數,32k為大小,最大快取為4個32kb
sendfile on;#開啟高效傳輸模式
tcp_nopush on; # tcp_nopush,tcp_nodelay設定on,防止網路阻塞
tcp_nodelay on;
keepalive_timeout 65; #指定客戶端連線保持活動的超時時間
client_header_timeout 10;#指定客戶端請求頭讀取超時時間,如果超過這個時間,客戶端還沒有傳送任何資料,Nginx將返回“Request time out(408)”錯誤
client_body_timeout 10;#指定客戶端請求主體讀取超時時間,如果超過這個時間���客戶端還沒有傳送任何資料,Nginx將返回“Request time out(408)”錯誤
send_timeout 10;#指定響應客戶端的超時時間。這個超時僅限於兩個連線活動之間的時間,如果超過這個時間,客戶端沒有任何活動,Nginx將會關閉連線
gzip on; #開啟gzip壓縮,實時壓縮輸出資料流
gzip_min_length 1k; #設定允許壓縮的頁面最小位元組數
gzip_buffers 4 16k; #指定記憶體空間來存貯壓縮結果,這裡指定4個單位為16k的記憶體來儲存壓縮結果,即總大小為64k
gzip_http_version 1.1;#指定識別HTTP協議版本,預設是1.1
gzip_comp_level 2;#指定gzip壓縮比,1 壓縮比最小,處理速度最快;9 壓縮比最大,傳輸速度快,但處理最慢,也比較消耗CPU資源
gzip_types text/plain application/x-javascript text/css application/xml;#指定壓縮的型別,無論是否指定,“text/html”型別總是會被壓縮
gzip_vary on;#該選項開啟可以讓前端的快取伺服器快取經過gzip壓縮的頁面,例如,用Varnish快取經過Nginx壓縮的資料
server_tokens off;#隱藏Nginx版本號
server {
listen 8000; #指定Nginx監埠
server_name localhost;#用來指定IP或者域名
charset utf-8;#指定Nginx預設的字符集,只有utf-8支援中文字元
access_log logs/host.access.log main;#指定訪問日誌的名稱及位置
location / {
index index.html index.htm;#設定預設首頁
root /tom/webapps/ROOT;#指定網頁根目錄
}
location ~ (jsp|\?) { #指定url中包含jsp或者?的全部轉發到192.168.0.10的80埠即tomcat處理
proxy_pass http://192.168.0.10:80;
}
相關推薦
Nginx 效能優化(配置檔案詳解)
隨著訪問量的不斷增加,需要對 Nginx 和核心做相應的優化來滿足高併發使用者的訪問,那下面在單臺 Nginx 伺服器來優化相關引數。 Nginx.conf 配置優化: worker_processes 8; nginx 程序數,建議按照 cpu 數目來指定,一般為它的倍數。worke
nginx伺服器安裝及配置檔案詳解(轉載)
nginx在工作中已經有好幾個環境在使用了,每次都是重新去網上扒部落格,各種編譯配置,今天自己也整理一份安裝文件和nginx.conf配置選項的說明,留作以後參考。像負載均衡配置(包括健康檢查)、快取(包括清空快取)配置例項,請參考http://segmentfault.
學習dubbo(二) 配置檔案詳解
一、dubbo常用配置 <dubbo:service/> 服務配置,用於暴露一個服務,定義服務的元資訊,一個服務可以用多個協議暴露,一個服務也可以註冊到多個註冊中心。 eg、<dubbo:service ref="demoService" interface="com.unj.dubb
Spring Boot(二)配置檔案詳解
簡介 Spring Boot使用“習慣由於配置”(專案中存在大量預設的配置,而且內建tomcat)的理念,讓你的無需手動進行配置就可以將專案執行起來。使用Spring Boot很容易建立一個獨立執行的、準生產級別的Spring框架的專案。同時,Spring Boot還提供一個全域性配置檔案對一些
Nginx學習(二)----Nginx配置檔案詳解
Nginx配置檔案詳解 安裝完成後,輸入cd /usr/local/nginx/conf/,進入conf資料夾,通過vim nginx.conf命令,檢視nginx配置檔案,預設配置檔案如下所示: 補充學習地址:Nginx伺服器配置檔案nginx.conf例
三大框架(ssh)學習——配置檔案詳解(二)
多配置檔案實現 專案經常需要多人協作開發,但是如果大家都是用同一個struts.xml檔案,會互相影響不利於開發的正常開展。這樣,我們可以通過<include>元素指定多個配置檔案。 可以在src下面建立多個struts配置檔案。然後再struts.xml中分別引入: str
Nginx配置配置檔案詳解
文章目錄 配置檔案 nginx.conf配置檔案詳解 用於除錯、定位問題的配置引數 正常執行必備的配置引數 優化效能的配置引數 事件相關配置 Fastcgi相關配置引數 常需要調整的引數 nginx作為web伺服器時使
Nginx實戰之1.1-1.6 Nginx介紹,安裝及配置檔案詳解
1.1 Nginx介紹 HTTP協議發展簡史 加粗 https://coding.net/u/aminglinux/p/nginx/git/blob/master/http/version.md 1991年釋出0.9版,只有GET方法,僅支援html,一個連線一個請求 &n
nginx主配置檔案詳解
#定義Nginx執行的使用者和使用者組user www www; #nginx程序數,建議設定為等於CPU總核心數。worker_processes 8; #全域性錯誤日誌定義型別,[ debug | info | notice | warn | error | crit ]error_log /var/
nginx的配置檔案詳解~~
#nginx程序,一般設定為和cpu核數一樣 worker_processes 4; #錯誤日誌存放目錄 error_
【SpringBoot學習之路】06.Springboot配置檔案詳解(二)
轉載宣告:商業轉載請聯絡作者獲得授權,非商業轉載請註明出處.原文來自 © 呆萌鍾 【SpringBoot學習之路】06.Springboot配置檔案詳解(二) 配置檔案值注入 @Value獲取值和@ConfigurationProperties獲取值比較
nginx 實戰--第二章 nginx配置檔案詳解
1.nginx 配置檔案結構 配置檔案結構 全域性配置(user、worker_processes、error_log、pid) events(網路連線相關,worker_connections) http(最重要的部分,大部分功能都放這裡) server(虛擬主機相
Nginx配置檔案詳解說明
#啟動子程序程式預設使用者 #user nobody; #一個主程序和多個工作程序。工作程序是單程序的,且不需要特殊授權即可執行;這裡定義的是工作程序數量 worker_processes 1; #全域性錯誤日誌的位置及日誌格式 #error_log logs/error.log;
Nginx.conf配置檔案詳解
執行使用者 user nobody; 啟動程序,通常設定成和cpu的數量相等 worker_processes 1; 全域性錯誤日誌及PID檔案 error_log logs/error.log; error_log logs/error.log not
nginx教程第九篇:nginx配置檔案詳解彙總
#####Nginx配置檔案nginx.conf中文詳解##### #定義Nginx執行的使用者和使用者組 user www www; #nginx程序數,建議設定為等於CPU總核心數。 worker_processes 8; #全域性錯誤日誌定義型別,
nginx.conf 配置檔案詳解
######Nginx配置檔案nginx.conf中文詳解##### #定義Nginx執行的使用者和使用者組 user www www; #nginx程序數,建議設定為等於CPU總核心數。 worker_processes 8; #全域性錯誤日誌定義型別
配置nginx方向代理,實現URL隱形轉發 (附帶nginx配置檔案詳解)
配置nginx方向代理,實現URL隱形轉發 (附帶nginx配置檔案詳解) 免費領取滿減阿里雲紅包 專案名稱:【域名解析–隱形URL轉發】–centos 7.3 環境: 阿里雲伺服器之上有多個tomcat; tomcat的網站基於ip+埠開發+專案名名稱。 要求
SpringBoot 學習筆記二 配置檔案詳解
在建立SpringBoot專案時,工程會自動建立一個application.properties,或者application.yml,兩種檔案格式都支援,這裡用application.yml,加入以下配置,注意空格 1. 引入依賴 &
nginx的配置檔案詳解
nginx.conf配置檔案詳解 其實,對比,apache的配置檔案,它的相對比較清晰和簡單,之前覺得很難,現在沉下心來想想,其實很簡單。大致的分塊下,基本就分為以下幾塊: mainevents {....}http {.... upstream
【轉載】nginx 配置檔案詳解
user www www;#使用哪個使用者啟動nginx 前面是使用者,後面是組 worker_processes 4;#nginx工作的程序數量 #[ debug | info | notice | warn | error | crit ] 錯誤日誌的級別及位置