Archive


Category: 來玩Nginx

  • Nginx的瀏覽器快取設定

    網站網頁的服務中,針對傳輸流量及效率上,會使用快取的機制. 設定某些常用的元件,暫時儲存在使用者的電腦快取中,以增加頁面元件重複使用的速度. 而針對這些元件,因其用途不同,可能短至希望每次都能更新或者存放個十天半個月都有可能. 而這些元件時效的設定,就可以在Nginx的設定檔上做規範. 它的語法如下 expires [time|epoch|max|off] 預設值是 expires off,這個語法可以加入在http,server,location區塊中 time 是指定現在系統時間加上time的秒數為過期時間 epoch 指定為1 January, 1970, 00:00:01 GMT. max 指定為31 December 2037 23:59:59 GMT, “Cache-Control”   Cache-Control = -1 表示永遠過期   Cache-Contorl  = 負數,表示no-cache   Cache-Control = 零或正數,表示cache的存留時間 off 不修改expires和Cache-Control   例如要針對jpg和png圖檔設定快取時間為1天,規則如下 location ~ .*\.(jpg|png)$ {     expires 1d; }

  • Nginx設定目錄內容自動索引

    某些情形需要,在使用者瀏覽某個網頁時,列出該目錄的所有檔案,通常運用在下載頁面. 那要如何達成呢??設定如下 1. location區塊內將autoindex打開,但要注意同一個區塊內不能有index的首頁設定 location /{     autoindex on; } 2. 檔案大小使用人類單位 location /{     autoindex on;     autoindex_exact_size on; } 3. 顯示檔案的本機時間 location /{     autoindex on;     autoindex_exact_size on;     autoindex_localtime on; }

  • Nginx日誌記錄檔相關設定

    本文是介紹Nginx的日誌記錄檔存放規則設定,如果你要找日誌記錄檔的格式設定,請參考http://charleslin74.pixnet.net/blog/post/460119008-Nginx%E8%A8%98%E9%8C%84%E6%AA%94%E6%A0%BC%E5%BC%8F%E8%A8%AD%E5%AE%9A%E5%AE%A2%E8%A3%BD%E5%8C%96 接下來進入主題,以上所講的設定,一樣是放在nginx.conf裡面 1. 設定的格式如下 access_log path [format [buffer=size | off]] 2. 如果不想記錄日誌,可以設定如下 access_log off; 3. 常見的日誌設定,因為沒有指定format,所以是使用預設的combined,並且日誌記錄是存放在/var/log/nginx/nginx.log. access_log /var/log/nginx/nginx.log; 4. 日誌記錄指定格式為mylogformat,但記得要去設定一個名稱為mylogforate的記錄格式. access_log /var/log/nginx/nginx.log mylogformat; 5. 設定中可以包含變數,其中的$server就是設定虛擬主機時用的server_name,比如虛擬主機是abc.com,但記錄檔名就是abc.com.log access_log /var/log/nginx/$server.log mylogformat; 但使用變數需要搭配open_log_file_cache使用 open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m; max 設定快取中的最大檔案述符號數量 inactive 設定檔案描述符號多久沒使用後刪除 min_uses 設定描述符號記入快取的門檻 valid 設定檢查變數的檔案路徑和檔案名是否仍存在的時間 6. 日誌記錄檔的分割,將nginx_master_process_id改為你的nginx主執行緒的id,然後寫個shell,放到crontab定時執行就好了 mv /var/log/nginx/nginx.log /var/log/nginx/nginx20170914.log kill -USR1 nginx_master_process_id  

  • Nginx記錄檔格式設定客製化

    服務就免不了要記錄,因為記錄可以讓我們觀察服務運行是否正常,也可以進行分析獲得有用的資訊 而Nginx的記錄檔的格式設定一樣也放在nginx.conf裡面,它預設使用combined格式,conbined是格式的名稱. 你可以自行設定自己的記錄格式,並依需要命名格式名稱,但記得名稱是唯一值,不能重複. 以下就是combined的格式 log_format combined ‘$remote_addr – $remote_user [$time_local] ‘                     ‘”$request” $status $body_bytes_sent ‘                     ‘”$http_referer” “$http_user_agent”‘; $remote_addr 記錄用戶IP $remote_user 記錄用戶端用戶名稱 $time_local 記錄造訪時區時間 $request 記錄請求的URL及HTTP協定 $status 記錄請求狀態 $body_bytes_sent 記錄傳送資料大小 $http_referer 記錄關聯頁面 $http_user_agent 記錄用戶使用的瀏覽器   客製化格式規格很常用到的一個例子是,Nginx主機很常會在防火牆或者是負載平衡器的後方,這時你用$remote_addr取到的IP,永遠是防火牆或負載平衡器的IP. […]

  • Nginx上設定虛擬主機的設定檔範例

    一台主機上安裝Nginx,如同其他WEB的程式,它也可以同時服務多個站台. 站台可以基於IP或者是域名或是網路埠來進行區分,這些設定一樣是在nginx.conf裡面輸入. 本文的設定範例是針對虛擬主機區段的部分,而不是包含整個nginx.conf裡面的內容. 所以你可以將範例複製到nginx.conf裡面,應該就能執行了. 當然這三種方法混用也是可以的,所以搭配就變得很靈活了. 1. 以IP為區分的虛擬主機設定 http{     server{         listen    192.168.0.1:80;         server_name    192.168.0.1;         access_log    logs/server80.access.log combined;         location /{             index    index.html index.htm;             root    html/server80;         }     }     server{         listen    192.168.0.1:8080;         server_name    192.168.0.1;        […]

  • Nginx如何不中斷服務升級版本或加入新模組

    當Nginx執行了一段時間後,可能會有新版本更新,或者因為需求必須加入新的功能模組. 如果你有多台Nginx並且有做分流,那可以一台台主機做更新,不會造成服務的中斷, 但是假設你只有一台Nginx,除非你老板同意,不然怎麼可能將服務停下來,等更新完再啟動服務. 所以如何不中斷服務就達到升級版本或重新編譯加入新模組,就很重要了,以下就是操作的步驟 1. 先獲得目前Nginx的主執行緒編號,就是master process的編號2713,而有另外的worker process,它的第二個數字是2713,代表是主執行緒所產生的工作執行緒 # ps -ef|grep nginx root      2713     1  0 20:08 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nobody    2714  2713  0 20:08 ?        00:00:00 nginx: worker process 2. 更新前先將你的Nginx安裝目錄備份,接著編譯新版本或加入新模組參數的Nginx到先前的安裝目錄,這時原先的目錄已經是新的程式了.(如何安裝編譯你可以參考這篇http://charleslin74.pixnet.net/blog/post/460115545) 3. 用以下的指令進行新版本的啟動 # kill -USR2 2713 4. 這時再使用ps -ef|grep nginx,這時你會發現同時出現了二個master process,除了舊的2713,還有一個2746,新舊版本同時執行,並同時處理外來的要求. root      2713     1  0 20:08 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nobody    2714  2713  0 20:08 ? […]

  • CentOS上安裝Nginx的步驟

    1. 先安裝編譯工具及相依套件 yum -y install gcc gcc-c++ autoconf automake yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel 2. 下載Nginx,請找最新的stable版本 wget http://nginx.org/download/nginx-1.12.1.tar.gz 3. 將下載的套件解壓縮以備安裝 tar xzvf nginx-1.12.1.tar.gz 4. 進入解壓後的目錄,開始安裝 cd nginx-1.12.1 ./configure make make install 5. 第4步驟的./configure可以依需求做更精密的設定,設定相關說明使用下面指令 ./configure –help   –help                             […]

  • [WEB應用] CentOS安裝nginx+php+fastcgi

    rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum install nginx yum install php-pear-Net-Socket php-pear php-common php-gd php-devel php php-mbstring php-pear-Mail php-cli php-imap php-snmp php-pdo php-xml php-pear-Auth-SASL php-ldap php-pear-Net-SMTP php-mysql yum install spawn-fcgi vi /etc/init.d/php_cgi add content as below #!/bin/sh # # php-cgi – php-fastcgi swaping via  spawn-fcgi # # chkconfig:   – 85 15 # description:  Run php-cgi as app […]