常用配置文件之Nginx篇

為何會有此篇文章

平時不怎么搭建服務器環(huán)境为严,等真的要用的時候又忙的焦頭爛額逛漫,所以把我自己常用的配置文件留存在這里,并且附帶一些中文注釋锤灿,方便自己和他人查閱挽拔。

Nginx配置文件結構

這張圖相信大家一定在不少地方都看過。

nginx配置文件結構.png

配置文件詳解

參考了別人的配置文件和我自己的配置文件但校。

#定義Nginx運行的用戶和用戶組螃诅,像ubuntu16.04默認配置文件里填的就是www-data,不填默認是nobody.
user www-data www-data;

#Nginx進程數(shù)状囱,建議設置為等于CPU總核心數(shù)术裸。
worker_processes auto;

#全局錯誤日志定義類型,多個等級可并存亭枷,[ debug | info | notice | warn | error | crit ]袭艺,從左到右錯誤信息越來越少;
#此指令可以在全局叨粘、http猾编、server、location塊中配置)
error_log /var/log/nginx/error.log notice;
access_log /var/log/nginx/error.log;

#儲存Nginx進程id的文件路徑
pid /var/run/nginx.pid;

#一個Nginx進程打開的最多文件描述符數(shù)目升敲,理論值應該是最多打開文件數(shù)(系統(tǒng)的值ulimit -n)
#一般Nginx的錯誤日志里面看到 “too many open files”,可能就要調整這個詞
worker_rlimit_nofile 65535;

#工作模式與連接數(shù)上限
events
{
    #參考事件模型答倡,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; 
    #epoll模型是Linux 2.6以上版本內核中的高性能網(wǎng)絡I/O模型,如果跑在FreeBSD上面驴党,就用kqueue模型瘪撇。
    #一般不填就是默認的
    use epoll;
    #單個進程最大連接數(shù),簡單公式max_clients = work_processes x worker_connections
    worker_connections 52100;
}

#設定http服務器
http
{  
    #文件擴展名與文件類型映射表,比如ubuntu16.04就在/etc/nginx/mime.types
    include mime.types; 
    #默認文件類型
    default_type   application/octet-stream
    #默認編碼,建議帶上鼻弧,避免一些奇怪的問題
    charset utf-8;
    #客戶端請求頭的buffersize的大小设江,調整客戶端上傳文件大小是另一個參數(shù),別搞混淆了
    client_header_buffer_size 32k; 
    #客戶端請求中較大的消息頭的緩存的數(shù)量和大小攘轩,這里的4是數(shù)量儿捧,32k是大小
    large_client_header_buffers 4 32k;
    #客戶端請求中http的body的大小,一般理解為請求文件大小纵东,如果你的php和php-fpm設置了上傳
    #文件大小的限制定鸟,記得nginx里面也要改成相應的稿存,不然會出現(xiàn) 客戶端文件無法上傳的問題。
    client_max_body_size 8m; 
    #設置on表示高效傳輸文件的模式瞳秽,一般網(wǎng)站建議開啟瓣履。
    sendfile on;
    #開啟目錄列表訪問,合適下載服務器练俐,默認關閉袖迎。
    #autoindex on; 
    #關閉服務器版本號顯示,一般生產環(huán)境還是建議關閉,避免被其他人知道了nginx的版本而查到相關漏洞
    server_tokens off; 腺晾。
    #一般在sendfile開啟的時候才起作用燕锥,主要是用來防止網(wǎng)絡堵塞
    tcp_nopush on; 
    tcp_nodelay on; 
    #設置客戶端保持活動連接的時間,超過這個時間悯蝉,服務器會關閉連接归形,可以根據(jù)你的php-fpm的超時時間
    #來設置這個
    keepalive_timeout 65;

    #gzip模塊設置
    #開啟gzip壓縮輸出
    gzip on; 
    #最小壓縮文件大小
    gzip_min_length 1k;
    #gzip的緩存區(qū)的數(shù)量和大小,默認是申請和Content-Length中一樣大小的緩沖區(qū)
    gzip_buffers 4 16k;
    #支持的http的協(xié)議版本鼻由,可以選1.0和1.1暇榴,一般瀏覽器都支持了,可以不填這個選項也行
    gzip_http_version 1.0;
    #壓縮等級蕉世,取值是1-9蔼紧,越高速度越慢越消耗cpu資源,不建議開太高讨彼,一般2就夠了
    gzip_comp_level 2; 
    #壓縮類型歉井,默認就已經包含text/html,所以下面就不用再寫了哈误,寫了會有warn哩至。
    gzip_types text/plain Application/x-javascript text/css Application/xml;
    #是否讓前端的緩存服務器緩存壓縮后的gzip文件
    gzip_vary on;
    #包含/etc/nginx/conf.d下面的所有后綴為.conf的配置文件
    #可以根據(jù)業(yè)務也可以根據(jù)域名來合理分配你的配置文件    
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    #upstream的負載均衡,weight是權重蜜自,可以根據(jù)機器配置定義權重菩貌。weigth參數(shù)表示權值,權值越高被分
    #配到的幾率越大重荠,也有別的方式箭阶,不過最常用的就是這一種,可以在后面的配置中調用戈鲁。
    upstream test {
        server 192.168.80.121:80 weight=3;
        server 192.168.80.122:80 weight=2;
        server 192.168.80.123:80 weight=3;
    }

    #常用的server配置仇参,一般一個對應一個域名
    server
    {
        #監(jiān)聽端口
        listen 80;
        #域名可以有多個,用空格隔開
        server_name localhost www.ilovenginx.com;
        #默認的首頁文件婆殿,注意一下順序诈乒,尤其是如果你是php應用,碰巧有index.html頁面的時候要注意下
        index index.html index.htm index.php;
        #網(wǎng)站的根目錄
        root /var/www/test;
       
        #location 支持正則表達式和條件判斷匹配婆芦,可以針對動靜態(tài)網(wǎng)頁做一些過濾處理
        #比如對php后綴的處理
        location ~ .*\.(php|php5)?$
        {   
            #這里也是可以設置更目錄路徑的
            root /var/data/test/php
            #可以是端口也可以是socket怕磨,看你PHP的配置喂饥,一般sock性能稍微好點
            #fastcgi_pass unix:/tmp/php-cgi.sock;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            #好多人少這一條,或者路徑不對就GG了肠鲫,以后詳細說明
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi.conf;
        }
        
        #這個是設置圖片或者flash在HTTP應答里面Expires和Cache-Control的HTTP頭员帮,以達到在瀏覽器中
        #緩存圖片和flash的作用,這里緩存了30天
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires 30d;
        }
        #定義錯誤提示頁面
        error_page   500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

    #一個https網(wǎng)站的配置
    server
    {
        #監(jiān)聽端口
        listen 443;
        #域名可以有多個导饲,用空格隔開
        server_name localhost www.ilovenginx.com;
        #默認的首頁文件捞高,注意一下順序,尤其是如果你是php應用帜消,碰巧有index.html頁面的時候要注意下
        index index.html index.htm index.php;
        #網(wǎng)站的根目錄
        root /var/www/test;
        
        #打開ssl
        ssl on;
        #證書和key棠枉,怎么生成的自己查資料去,位置就填你放證書的位置
        ssl_certificate /usr/local/nginx/conf/local.crt;
        ssl_certificate_key /user/local/nginx/local_nopwd.key;
    }
    
    #一個ruby應用的例子
    server 
    {
        listen 80;
        server_name  localhost;
        location /
        {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_pass http://127.0.0.1:3000;
       }
    }
}

下載APP的配置

APK和IPA分本是Android應用和iOS應用的擴展名泡挺。如果瀏覽器下載Nginx服務器中的后綴名為.apk和.ipa的文件時,瀏覽器會自動命名為zip文件命浴。
如果需要下載文件名后綴就是.apk或者.ipa娄猫,可以修改Nginx.conf目錄下的mime.types文件,在文件中增加兩行生闲。

application/vnd.android.package-archive apk;
application/iphone pxl ipa;

重啟nginx就能生效了媳溺。

結語

  1. 生產環(huán)境中修改配置文件,務必要養(yǎng)成先備份配置文件的習慣碍讯。
  2. 如果修改文件后需要重啟nginx悬蔽,一定要記得先用nginx -t參數(shù)檢查你的配置文件語法是否正確。我也有經歷過沒檢查配置文件捉兴,導致nginx重啟的過程中nginx停止服務蝎困,影響網(wǎng)站的正常運行的。
  3. 使用nginx -s reload 平滑重啟nginx倍啥。
  4. 線上服務器要重視用戶的體驗禾乘,所有的操作謹慎一些沒有錯。

參考來源

《App后臺開發(fā)運維和架構實現(xiàn)》曾健生 編著
《Nginx配置文件(nginx.conf)詳解》 技術學習 簡書發(fā)布

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末虽缕,一起剝皮案震驚了整個濱河市始藕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌氮趋,老刑警劉巖伍派,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異剩胁,居然都是意外死亡诉植,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門摧冀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倍踪,“玉大人系宫,你說我怎么就攤上這事〗ǔ担” “怎么了扩借?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缤至。 經常有香客問我潮罪,道長,這世上最難降的妖魔是什么领斥? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任嫉到,我火速辦了婚禮,結果婚禮上月洛,老公的妹妹穿的比我還像新娘何恶。我一直安慰自己,他們只是感情好嚼黔,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布细层。 她就那樣靜靜地躺著,像睡著了一般唬涧。 火紅的嫁衣襯著肌膚如雪疫赎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天碎节,我揣著相機與錄音捧搞,去河邊找鬼。 笑死狮荔,一個胖子當著我的面吹牛胎撇,可吹牛的內容都是我干的。 我是一名探鬼主播轴合,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼创坞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了受葛?” 一聲冷哼從身側響起题涨,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎总滩,沒想到半個月后纲堵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡闰渔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年席函,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冈涧。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡茂附,死狀恐怖正蛙,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情营曼,我是刑警寧澤乒验,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站蒂阱,受9級特大地震影響锻全,放射性物質發(fā)生泄漏。R本人自食惡果不足惜录煤,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一鳄厌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妈踊,春花似錦了嚎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赘风,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纵刘,已是汗流浹背邀窃。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留假哎,地道東北人瞬捕。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像舵抹,于是被迫代替她去往敵國和親肪虎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內容

  • Page 1:nginx 服務器安裝及配置文件詳解 CentOS 6.2 x86_64 安裝 nginx 1.1 ...
    xiaojianxu閱讀 8,535評論 1 41
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理惧蛹,服務發(fā)現(xiàn)扇救,斷路器,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 1. Nginx的模塊與工作原理 Nginx由內核和模塊組成香嗓,其中迅腔,內核的設計非常微小和簡潔,完成的工作也非常簡單...
    rosekissyou閱讀 10,209評論 5 124
  • nginx在工作中已經有好幾個環(huán)境在使用了靠娱,每次都是重新去網(wǎng)上扒博客沧烈,各種編譯配置,今天自己也整理一份安裝文檔和n...
    AndyChin閱讀 2,296評論 0 4
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx像云?那么一定聽過它的“同行”Apache吧锌雀!Ngi...
    JokerW閱讀 32,670評論 24 1,002