openresty开发系列4--nginx的配置文件说明
openresty開發系列4--nginx的配置文件說明
Nginx基本配置
Nginx的主配置文件是:nginx.conf,nginx.conf主要組成如下:
# 全局區?? 有一個工作子進程,一般設置為CPU數 * 核數
worker_processes? 1;
events {
??? # 一般是配置nginx進程與連接的特性
??? # 如1個word能同時允許多少連接,一個子進程最大允許連接1024個連接
???? worker_connections? 1024;
}
?# 配置HTTP服務器配置段
http {
??? # 配置虛擬主機段
??? server {
???????? # 定位,把特殊的路徑或文件再次定位。
???????? location? {
????????????????? ?
???????? }
??? }
???? server {
????????????????? ?
???? }
}
#以哪個用戶,運行nginx應用
#nobody是個低權限用戶,為了安全
#user nobody;
#nginx進程數 啟動進程,通常設置成 cpu的核數
查看cpu核數
# cat /proc/cpuinfo
worker_processes? 1;
#全局錯誤日志
#nginx的error_log類型如下(從左到右:debug最詳細 crit最少):
#[ debug | info | notice | warn | error | crit ]
#例如:error_log logs/nginx_error.log? crit;
#解釋:日志文件存儲在nginx安裝目錄下的 logs/nginx_error.log ,錯誤類型為 crit ,也就是記錄最少錯誤信息;
error_log? logs/error.log;
error_log? logs/notice.log? notice;
error_log? logs/info.log? info;
#PID文件,記錄當前啟動的nginx的進程ID
pid??????? logs/nginx.pid;
#這個參數表示worker進程最多能打開的文件句柄數,基于linux系統ulimit設置
#查看系統文件句柄數最大值:ulimit -n
#Linux一切皆文件,所有請求過來最終目的訪問文件,所以該參數值設置等同于liunx系統ulimit設置為優
#可以通過linux命令設置? 最大的文件句柄數65535
worker_rlimit_nofile 65535;
#工作模式及連接數上限
events {
?? #網絡模型高效(相當于建立索引查找結果),nginx配置應該啟用該參數
?? #但是僅用于linux2.6以上內核,可以大大提高nginx的性能
?? use?? epoll;??????????? ?
?? #該參數表示設置一個worker進程最多開啟多少線程數
?? #優化設置應該等同于worker_rlimit_nofile設置值,表明一個線程處理一個http請求,同時可以處理一個文件數,各個模塊之間協調合作不等待。
?? worker_connections? 65535;
}
#設定http服務器,利用它的反向代理功能提供負載均衡支持
??? http {
???????? #設定mime類型,類型由mime.type文件定義
???????? #MIME(Multipurpose Internet Mail Extensions)多用途互聯網郵件擴展類型。是設定某種擴展名的文件用一種應用程序來#打開的方式類型,當該擴展名文件被訪問的時候,瀏覽器會自動使用指定應用程序來打開
??????? 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;
??????? #sendfile 開啟高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件,對于普通應用設為 on,如果用來進行下載等應用磁盤IO重負載應用,可設置為off,以平衡磁盤與網絡I/O處理速度,降低系統的負載。注意:如果圖片顯示不正常把這個改成off。
??????? sendfile??????? on;
??????? tcp_nopush???? on; # 防止網絡阻塞
??????? tcp_nodelay??????? on; # 防止網絡阻塞
??????? #連接超時時間
??????? #keepalive_timeout? 0; ?
??????? keepalive_timeout? 65; #長連接超時時間,單位是秒
????? ?
??????? #開啟gzip壓縮
??????? gzip? on;
?? ??? ?gzip_disable "MSIE [1-6]\."; # IE6及以下禁止壓縮
??????? gzip_min_length 1k; #最小壓縮文件大小
?? ??? ?gzip_buffers 4 16k; #壓縮緩沖區
?? ??? ?gzip_http_version 1.0; #壓縮版本(默認1.1,前端如果是squid2.5請使用1.0)
?? ??? ?gzip_comp_level 2; #壓縮等級
?? ??? ?gzip_types text/plain application/x-javascript text/css application/xml; #壓縮類型
?? ??? ?gzip_vary on; #給CDN和代理服務器使用,針對相同url,可以根據頭信息返回壓縮和非壓縮副本
??????? #設定請求緩沖
??????? client_header_buffer_size??? 1k;?? #上傳文件大小限制
??????? large_client_header_buffers? 4 4k;? #設定請求緩存
??????? #設定負載均衡的服務器列表
??????? upstream mysvr {
?? ???????? #weigth參數表示權值,權值越高被分配到的幾率越大
?? ???????? server 192.168.8.1x:3128 weight=5;
?? ???????? server 192.168.8.2x:80? weight=1;
?? ???????? server 192.168.8.3x:80? weight=6;
??????? }
??????? upstream mysvr2 {
?? ???????? #weigth參數表示權值,權值越高被分配到的幾率越大
?? ???????? server 192.168.8.x:80? weight=1;
?? ???????? server 192.168.8.x:80? weight=6;
??????? }
??????? #虛擬主機的配置
?????? server {
??????????? #偵聽80端口
??????????? listen?????? 80;
??????????? #設置編碼
??? ???? #charset koi8-r;
??????????? #定義使用www.xx.com訪問 域名可以有多個,用空格隔開
??????????? server_name? www.xx.com;
??????????? #設定本虛擬主機的訪問日志
??????????? access_log? logs/www.xx.com.access.log? main;
?? ???? #默認請求
??????????? location / {
????????????? root?? /root;????? #定義服務器的默認網站根目錄位置
????????????? index index.php index.html index.htm;?? #定義首頁索引文件的名稱
???????????? proxy_pass? http://mysvr ;#請求轉向mysvr 定義的服務器列表
????????????? client_max_body_size 10m;??? #允許客戶端請求的最大單文件字節數
????????????? client_body_buffer_size 128k;? #緩沖區代理緩沖用戶端請求的最大字節數,?? ?
???????????? #以下是一些反向代理的配置可刪除.
????????????? 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_connect_timeout 90;?? ??? ?#nginx跟后端服務器連接超時時間(代理連接超時)
????????????? proxy_send_timeout 90;?? ??? ?#后端服務器數據回傳時間(代理發送超時)
????????????? proxy_read_timeout 90;?? ??? ?#連接成功后,后端服務器響應時間(代理接收超時)
????????????? proxy_buffer_size 4k;???????????? #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小
????????????? proxy_buffers 4 32k;????????????? #proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設置
????????????? proxy_busy_buffers_size 64k;?? ?#高負荷下緩沖大小(proxy_buffers*2)
????????????? proxy_temp_file_write_size 64k;?? #設定緩存文件夾大小,大于這個值,將從upstream服務器傳
??????? }
??????? # 定義錯誤提示頁面
??????? error_page?? 500 502 503 504 /50x.html;
??????????? location = /50x.html {
??????????? root?? /root;
??????? }
??????? #本地動靜分離反向代理配置
?? ??? ?#所有jsp的頁面均交由tomcat或resin處理
?? ??? ?location ~ .(jsp|jspx|do)?$ {
?? ??? ??? ?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_pass http://127.0.0.1:8080;
?? ??? ?}
??????? #靜態文件,nginx自己處理
??????? location ~ ^/(images|javascript|js|css|flash|media|static)/ {
??????????? root /var/www/virtual/htdocs;
??????????? #過期30天,靜態文件不怎么更新,過期可以設大一點,如果頻繁更新,則可以設置得小一點。
??????????? expires 30d;
??????? }
??????? #設定查看Nginx狀態的地址
??????? location /NginxStatus {
??????????? stub_status??????????? on;
??????????? access_log????????????? on;
??????????? auth_basic????????????? "NginxStatus";
??????????? auth_basic_user_file? conf/htpasswd;
??????????? #htpasswd文件的內容可以用apache提供的htpasswd工具來產生。
??????? }
??????? #禁止訪問 .htxxx 文件
??????? location ~ /\.ht {
??????????? deny all;
??????? }
??????? }
??? }
轉載于:https://www.cnblogs.com/reblue520/p/11429320.html
總結
以上是生活随笔為你收集整理的openresty开发系列4--nginx的配置文件说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openresty开发系列3--ngin
- 下一篇: openresty开发系列10--ope