NGINX配置的一些優化

vboy1010發表於2014-04-08

worker_processes and worker_connections

worker_processes  1;
worker_connections  1024;

這兩個引數的預設值,基本滿足一般網站的日常需求。但是根據伺服器狀況,來做點微調,效果會更好!

max_clients = worker_processes * worker_connections

預設配置中,一臺伺服器處理1000個併發。當伺服器的磁碟慢時,就會導致 Nginx 在 I/O 操作上被鎖住。

為了避免此類問題,可以做如下處理

worker_processes [number of processor cores]

接下來,我們看看CPU有多少個核心

cat /proc/cpuinfo |grep processor
processor   : 0
processor   : 1
processor   : 2
processor   : 3

有4個核心,設定引數如下:

worker_processes 4;

有人認為這兩個引數的值越大越好,這是不正確的。導致資源浪費的同時可能會導致一些嚴重的問題產生。

隱藏Nginx版本資訊

基於安全原因,不想讓使用者知道當前使用的 Nginx 版本資訊等,需要做如下設定

server_tokens off;

提高上傳檔案大小限制

如果遇到以下錯誤,你就應該提高上傳大小限制了。

“Request Entity Too Large” (413)

引數設定

client_max_body_size 20m;
client_body_buffer_size 128k;

瀏覽器快取控制

如果你想節省資源和頻寬,引入瀏覽器快取不失為一個好的方案。這裡,主要針對一些靜態檔案。

location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
    access_log        off;
    log_not_found     off;
    expires           360d;
}

轉發請求給PHP-FPM

兩種方式:TCP/IP 和 Unix Socket。

# Pass PHP scripts to PHP-FPM
location ~* \.php$ {
    fastcgi_index   index.php;
    fastcgi_pass    127.0.0.1:9000;
    #fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}

禁止訪問隱藏檔案

在伺服器根目錄或公共目錄下,有很多隱藏檔案,比如.開頭的檔案,版本控制檔案以及目錄 .svn .htaccess 等。這些都不應該讓使用者看到。

location ~ /\. {
    access_log off;
    log_not_found off; 
    deny all;
}

相關文章