细说Nginx配置文件
【注意】nginx的配置中不支持if條件的邏輯與&& 邏輯或|| 運算 ,而且不支持if的嵌套語法,否則會報下面的錯誤:nginx: [emerg] invalid condition。
#vim nginx.conf之后,就會有這樣的內容。
[root@ChrisChan conf]# vim nginx.conf
user nobody nobody;???? #用戶名,無所謂隨便寫
worker_processes auto;? #worker進程數量,這個是依據cpu內核和負載量等等一些值而定的,不是越大越好,有些默認是4
error_log? /home/wwwlogs/nginx_error.log? crit; ????#錯誤日志的存放路徑
pid??????? /usr/local/nginx/logs/nginx.pid;???? #master pid就在這個路徑里,如果要寫sh停止nginx,不用ps -ef再切塊,直接cat這里就行
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
#工作模式及連接數上限
#下面的event和http是可以自己開發模塊往里面填充,讓nginx越來越靈活。
events
??? {
??????? use epoll;??? #epoll是多路復用IO(IO?multiplexing)中的一種,適用于linux2.6內核以上,可以大大提升nginx性能???????
????????worker_connections 51200;??????? #worker可以同時打開的連接數,這也是nginx引以為傲的地方。
??????? multi_accept on;??????? #保持開啟,nginx在接受新的請求的時候,會盡可能的接受鏈接。
??? }
http??? #當接收到http的請求時,這個模塊是主力軍
??????? default_type? application/octet-stream;
??????? server_names_hash_bucket_size 128;
??????? client_header_buffer_size 32k;
??????? large_client_header_buffers 4 32k;
??????? client_max_body_size 50m;
??????? sendfile?? on;? #sendfile函數保持開啟,這樣磁盤和tcp端口之間可以復制數據
??????? tcp_nopush on;? #nginx在一個包中發送全部的頭文件,而不是一次一個一次一個那種擠牙膏式
??????? keepalive_timeout 60;? ?
??????? #客戶端的有效鏈接時間,如果超過60秒沒有反應,服務器就會關閉這個鏈接,這個數字可以調小,15or30,不要讓服務器總等
??????? tcp_nodelay on; ????#nginx不要緩存數據,而是把小數據盡快的發出去
??????? fastcgi_connect_timeout 300;????#fastcgi鏈接超時的時間
??????? fastcgi_send_timeout 300;
??????? fastcgi_read_timeout 300;
??????? fastcgi_buffer_size 64k;
??????? fastcgi_buffers 4 64k;
??????? fastcgi_busy_buffers_size 128k;
??????? fastcgi_temp_file_write_size 256k;
??????? gzip on;??????? #開啟數據壓縮,這樣會減少要發送數據的量
??????? gzip_min_length? 1k;
??????? gzip_buffers???? 4 16k;
??????? gzip_http_version 1.1;
??????? gzip_comp_level 2;?????
????????#設置壓縮等級,從1~9,9就壓縮速度最慢的但是壓縮最徹底的等級
??????? gzip_types???? text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
??????? #具體的壓縮方法
??????? gzip_vary on;?? #檢測客戶端是否也可以gzip
??????? gzip_proxied?? expired no-cache no-store private auth;? #準許或禁止基于請求、相應的壓縮
??????? gzip_disable?? "MSIE [1-6]\.";? #為指定的客戶端關閉數據壓縮,過來多少數據就傳多少
??????? #limit_conn_zone $binary_remote_addr zone=perip:10m;
??????? ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.
??????? server_tokens off;
??????? #log format????????#日志的格式
??????? log_format? access? '$remote_addr - $remote_user [$time_local] "$request" '
???????????? '$status $body_bytes_sent "$http_referer" '
???????????? '"$http_user_agent" $http_x_forwarded_for';
??????? access_log on;????#開啟日志服務
server
??? {
??????? listen 80 default_server;?????? #在本地所有IP上監聽80端口,若寫成192.168.1.7:80,就是只監聽192.168.1.7的80端口
??????? #listen [::]:80 default_server ipv6only=on;
??????? server_name www.lnmp.org;?????? #域名
??????? index index.html index.htm index.php;?? #首頁第一選擇是index.html,其次是index.htm...
??????? autoindex on;?? #自動列域名打開,注意,這個平時請關閉!
??????? root? /usr/local/nginx/html;????#指定網頁的路徑
??????? #error_page?? 404?? /404.html;????#指定錯誤頁面,也可以指定502,501等等
??????? include enable-php.conf;
??????? location /{
??????????????? auth_basic "your password?";????#提示在訪問/的時候需要密碼
??????????????? auth_basic_user_file /usr/local/nginx/conf/passwd;????#密碼存放的文件路徑
??????????????? index index2.html;????#訪問/的時候會出現index2.html的界面
??????????????? root /usr/local/nginx/html;
??????????????? }
??????? location /nginx_status????#可以通過/nginx_status來查看當前連接數等信息
??????? {
??????????? stub_status on;????
??????????? access_log?? on;????
??????? }
??????? location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
??????? {
??????????? expires????? 30d;????#緩存gif/jpg等等文件要30天
??????? }
??????? location ~ .*\.(js|css)?$
??????? {
??????????? expires????? 12h;????#緩存js/css文件要12個小時
??????? }
??????? location ~ /\.
??????? {
??????????? deny all;
??????? }
??????? access_log? /home/wwwlogs/access.log? access;????#這個是http的access_log
??? }
server
?? {
??????? listen 80;
??????? server_name chrischan;
??????? root?? /usr/local/nginx/html/server1;
??????? index index.html;
?? }
include vhost/*.conf;
}
#mail {
#?????? # auth_http localhost/auth.php;
#?????? # pop3_capabilities "TOP" "USER";
#?????? # imap_capabilities "IMAP4revi" "UIDPLUS";
#?????? #server {
#?????? listen? localhost:110;
#?????? protocol??????? pop3;
#?????? proxy?? on;
#?????? }
#?????? #server {
#?????? listen localhost:143;
#?????? protocol??????? imap;
#?????? proxy?? on;
#?????? }
#}
如果服務器的cpu比較給力,內核比較新,推薦use epoll,處理高并發面不改色。但是kquene要差一點。
補充
--without-mail_pop3_module 禁用pop3協議(POP3即郵局協議的第3個版本,它是規定個人計算機如何連接到互聯網上的郵件服務器進行收發郵件的協議。是因特網電子郵件的第一個離 線協議標 準,POP3協議允許用戶從服務器上把郵件存儲到本地主機上,同時根據客戶端的操作刪除或保存在郵件服務器上的郵件。POP3協議是TCP/IP協議族中 的一員,主要用于 支持使用客戶端遠程管理在服務器上的電子郵件)
--without-mail_imap_module 禁用imap協議(一種郵件獲取協議。它的主要作用是郵件客戶端可以通過這種協議從郵件服務器上獲取郵件的信息,下載郵件等。IMAP協議運行在 TCP/IP協議之上, 使用的端口是143。它與POP3協議的主要區別是用戶可以不用把所有的郵件全部下載,可以通過客戶端直接對服務器上的郵件進行操作。)
--without-mail_smtp_module 禁用smtp協議(SMTP即簡單郵件傳輸協議,它是一組用于由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。SMTP協議屬于 TCP/IP協議族,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。)
--without-http_rewrite_module 禁用ngx_http_rewrite_module支持(該模塊允許使用正則表達式改變URI,并且根據變量來轉向以及選擇配置。如果在server級 別設置該選項,那么他們將在 location之前生效。如果在location還有更進一步的重寫規則,location部分的規則依然會被執行。如果這個URI重寫是因為 location部分的規則造成的,那么 location部分會再次被執行作為新的URI。 這個循環會執行10次,然后Nginx會返回一個500錯誤。)
轉載于:https://blog.51cto.com/chenx1242/1745663
總結
以上是生活随笔為你收集整理的细说Nginx配置文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【shell】awk的next用法
- 下一篇: Nginx+SSL+Tomcat+CDN