環境版本:centos6.8/nginx1.10.2/php5.6.29
====================安裝nginx1.10.2====================
#根據centos版本選擇對應yum源
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
#直接用yum安裝
yum install nginx
====================安裝php5.6.29====================
#php的官方下載地址是:http://www.php.net/downloads.php
wget http://cn2.php.net/distributions/php-5.6.29.tar.bz2
#解壓php壓縮包
tar -xjf php-5.6.29.tar.bz2
#進入php目錄
cd php-5.6.29
#編譯參數詳解
--prefix=/usr/local/php
#指定php安裝目錄 --with-apxs2=/usr/local/apache/bin/apxs #整合apache,apxs功能是使用mod_so中的LoadModule指令,加載指定模塊到apache,要求apache要打開SO模塊,本例使用nginx所以不需要 --with-config-file-path=/usr/local/php/etc #指定php.ini位置 --with-MySQL=/usr/local/mysql #mysql安裝目錄,對mysql的支持 --with-mysqli=/usr/local/mysql/bin/mysql_config #mysqli擴展技術不僅可以調用MySQL的存儲過程、處理MySQL事務,而且還可以使訪問數據庫工作變得更加穩定。 --enable-safe-mode
#打開安全模式
--enable-ftp
#打開ftp的支持
--enable-zip
#打開對zip的支持 --with-bz2
#打開對bz2文件的支持 --with-jpeg-dir
#打開對jpeg圖片的支持 --with-png-dir
#打開對png圖片的支持 --with-freetype-dir
#打開對freetype字體庫的支持 --without-iconv
#關閉iconv函數,種字符集間的轉換 --with-libXML-dir
#打開libxml2庫的支持 --with-XMLrpc
#打開xml-rpc的c語言 --with-zlib-dir
#打開zlib庫的支持 --with-gd
#打開gd庫的支持 --enable-gd-native-ttf
#支持TrueType字符串函數庫 --with-curl
#打開curl瀏覽工具的支持 --with-curlwrappers
#運用curl工具打開url流 --with-ttf
#打開freetype1.*的支持,可以不加了 --with-xsl
#打開XSLT 文件支持,擴展了libXML2庫 ,需要libxslt軟件 --with-gettext
#打開gnu 的gettext 支持,編碼庫用到 --with-pear
#打開pear命令的支持,PHP擴展用的 --enable-calendar
#打開日歷擴展功能 --enable-mbstring
#多字節,字符串的支持 --enable-bcmath
#打開圖片大小調整,用到zabbix監控的時候用到了這個模塊 --enable-sockets
#打開 sockets 支持 --enable-exif
#圖片的元數據支持 --enable-magic-quotes
#魔術引用的支持 --disable-rpath
#關閉額外的運行庫文件 --disable-debug
#關閉調試模式 --with-mime-magic=/usr/share/file/magic.mime
#魔術頭文件位置
#CGI方式安裝才用的參數 --enable-fpm #打上PHP-fpm 補丁后才有這個參數,CGI方式安裝的啟動程序 --enable-fastCGI #支持fastcgi方式啟動PHP --enable-force-CGI-redirect #重定向方式啟動PHP --with-ncurses #支持ncurses 屏幕繪制以及基於文本終端的圖形互動功能的動態庫 --enable-pcntl
#freeTDS需要用到的,可能是鏈接mssql才用到 #mhash和mcrypt算法的擴展 --with-mcrypt --with-mhash #以上函數庫需要安裝 --with-gmp
#應該是支持一種規范 --enable-inline-optimization
#優化線程 --with-openssl
#openssl的支持,加密傳輸時用到的 --enable-dbase
#建立DBA 作為共享模塊 --with-pcre-dir=/usr/local/bin/pcre-config
#perl的正則庫案安裝位置 --disable-dmalloc --with-gdbm
#dba的gdbm支持 --enable-sigchild --enable-sysvsem --enable-sysvshm --enable-zend-multibyte
#支持zend的多字節 --enable-mbregex --enable-wddx --enable-shmop --enable-soap
#本例中精簡安裝,命令如下
yum install gcc libxml2 libxml2-devel
./configure --prefix=/usr/local/php --enable-fpm --enable-mysqlnd --with-pdo-mysql=mysqlnd
make && make install
#配置php.ini文件
cp php.ini-production /usr/local/php/lib/php.ini
#配置php-fpm.conf文件
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid #pid設置,默認在安裝目錄中的var/run/php-fpm.pid,建議開啟 error_log = log/php-fpm.log #錯誤日志,默認在安裝目錄中的var/log/php-fpm.log log_level = notice #錯誤級別. 可用級別為: alert(必須立即處理), error(錯誤情況), warning(警告情況), notice(一般重要信息), debug(調試信息). 默認: notice. emergency_restart_threshold = 60 emergency_restart_interval = 60s #表示在emergency_restart_interval所設值內出現SIGSEGV或者SIGBUS錯誤的php-cgi進程數如果超過 emergency_restart_threshold個,php-fpm就會優雅重啟。這兩個選項一般保持默認值。 process_control_timeout = 0 #設置子進程接受主進程復用信號的超時時間. 可用單位: s(秒), m(分), h(小時), 或者 d(天) 默認單位: s(秒). 默認值: 0. daemonize = yes #后台執行fpm,默認值為yes,如果為了調試可以改為no。在FPM中,可以使用不同的設置來運行多個進程池。 這些設置可以針對每個進程池單獨設置。 listen = 127.0.0.1:9000 #fpm監聽端口,即nginx中php處理的地址,一般默認值即可。可用格式為: 'ip:port', 'port', '/path/to/unix/socket'. 每個進程池都需要設置. listen.backlog = -1 #backlog數,-1表示無限制,由操作系統決定,此行注釋掉就行。backlog含義參考:http://www.3gyou.cc/?p=41 listen.allowed_clients = 127.0.0.1 #允許訪問FastCGI進程的IP,設置any為不限制IP,如果要設置其他主機的nginx也能訪問這台FPM進程,listen處要設置成本地可被訪問的IP。默認值是any。每個地址是用逗號分隔. 如果沒有設置或者為空,則允許任何服務器請求連接 listen.owner = www listen.group = www listen.mode = 0666 #unix socket設置選項,如果使用tcp方式訪問,這里注釋即可。 user = www group = www #啟動進程的帳戶和組 pm = dynamic #對於專用服務器,pm可以設置為static。 #如何控制子進程,選項有static和dynamic。如果選擇static,則由pm.max_children指定固定的子進程數。如果選擇dynamic,則由下開參數決定: pm.max_children #,子進程最大數 pm.start_servers #,啟動時的進程數 pm.min_spare_servers #,保證空閑進程數最小值,如果空閑進程小於此值,則創建新的子進程 pm.max_spare_servers #,保證空閑進程數最大值,如果空閑進程大於此值,此進行清理 pm.max_requests = 1000 #設置每個子進程重生之前服務的請求數. 對於可能存在內存泄漏的第三方模塊來說是非常有用的. 如果設置為 '0' 則一直接受請求. 等同於 PHP_FCGI_MAX_REQUESTS 環境變量. 默認值: 0. pm.status_path = /status #FPM狀態頁面的網址. 如果沒有設置, 則無法訪問狀態頁面. 默認值: none. munin監控會使用到 ping.path = /ping #FPM監控頁面的ping網址. 如果沒有設置, 則無法訪問ping頁面. 該頁面用於外部檢測FPM是否存活並且可以響應請求. 請注意必須以斜線開頭 (/)。 ping.response = pong #用於定義ping請求的返回相應. 返回為 HTTP 200 的 text/plain 格式文本. 默認值: pong. request_terminate_timeout = 0 #設置單個請求的超時中止時間. 該選項可能會對php.ini設置中的'max_execution_time'因為某些特殊原因沒有中止運行的腳本有用. 設置為 '0' 表示 'Off'.當經常出現502錯誤時可以嘗試更改此選項。 request_slowlog_timeout = 10s #當一個請求該設置的超時時間后,就會將對應的PHP調用堆棧信息完整寫入到慢日志中. 設置為 '0' 表示 'Off' slowlog = log/$pool.log.slow #慢請求的記錄日志,配合request_slowlog_timeout使用 rlimit_files = 1024 #設置文件打開描述符的rlimit限制. 默認值: 系統定義值默認可打開句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。 rlimit_core = 0 #設置核心rlimit最大限制值. 可用值: 'unlimited' 、0或者正整數. 默認值: 系統定義值. chroot = #啟動時的Chroot目錄. 所定義的目錄需要是絕對路徑. 如果沒有設置, 則chroot不被使用. chdir = #設置啟動目錄,啟動時會自動Chdir到該目錄. 所定義的目錄需要是絕對路徑. 默認值: 當前目錄,或者/目錄(chroot時) catch_workers_output = yes #重定向運行過程中的stdout和stderr到主要的錯誤日志文件中. 如果沒有設置, stdout 和 stderr 將會根據FastCGI的規則被重定向到 /dev/null . 默認值: 空.
#配置php-fpm啟動文件
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod a+x /etc/init.d/php-fpm /etc/init.d/php-fpm start
#查看cgi啟動狀態
netstat -tunlp |grep 9000
====================配置nginx和php相關====================
server { listen 80; server_name 192.168.1.234; root /var/www; index index.html index.htm index.php; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include fastcgi_params; } }
#注意如果403了,請檢查是否關閉selinux
====================nginx與pathinfo與rewrite====================
#如果是thinkphp之類的,會牽扯pathinfo,nginx默認不支持,配置如下:
location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } }
====================關於nginx.conf的配置詳解====================
user nginx nginx ; Nginx用戶及用戶組。window下不指定 worker_processes 8; 工作進程:數目。根據硬件調整,通常等於CPU數量或者2倍於CPU。
查看cpu核心數命令cat /proc/cpuinfo| grep "cpu cores"| uniq error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; 錯誤日志:存放路徑。 pid logs/nginx.pid; pid(進程標識符):存放路徑。 worker_rlimit_nofile 204800; 指定進程可以打開的最大描述符:數目。 這個指令是指當一個nginx進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與nginx進程數相除,但是nginx分配請求並不是那么均勻,所以最好與ulimit -n 的值保持一致。 現在在Linux 2.6內核下開啟文件打開數為65535,worker_rlimit_nofile就相應應該填寫65535。 這是因為nginx調度時分配請求到進程並不是那么的均衡,所以假如填寫10240,總並發量達到3-4萬時就有進程可能超過10240了,這時會返回502錯誤。 events { use epoll; 使用epoll的I/O 模型。linux建議epoll,FreeBSD建議采用kqueue,window下不指定。 補充說明: 與apache相類,nginx針對不同的操作系統,有不同的事件模型 A)標准事件模型 Select、poll屬於標准事件模型,如果當前系統不存在更有效的方法,nginx會選擇select或poll B)高效事件模型 Kqueue:使用於FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用雙處理器的MacOS X系統使用kqueue可能會造成內核崩潰。 Epoll:使用於Linux內核2.6版本及以后的系統。 /dev/poll:使用於Solaris 7 11/99+,HP/UX 11.22+ (eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。 Eventport:使用於Solaris 10。 為了防止出現內核崩潰的問題, 有必要安裝安全補丁。 worker_connections 204800; 沒個工作進程的最大連接數量。根據硬件調整,和前面工作進程配合起來用,盡量大,但是別把cpu跑到100%就行。每個進程允許的最多連接數,理論上每台nginx服務器的最大連接數為。worker_processes*worker_connections keepalive_timeout 60; keepalive超時時間。 client_header_buffer_size 4k; 客戶端請求頭部的緩沖區大小。這個可以根據你的系統分頁大小來設置,一般一個請求頭的大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這里設置為分頁大小。 分頁大小可以用命令getconf PAGESIZE 取得。 但也有client_header_buffer_size超過4k的情況,但是client_header_buffer_size該值必須設置為“系統分頁大小”的整倍數。 open_file_cache max=65535 inactive=60s; 這個將為打開文件指定緩存,默認是沒有啟用的,max指定緩存數量,建議和打開文件數一致,inactive是指經過多長時間文件沒被請求后刪除緩存。 open_file_cache_valid 80s; 這個是指多長時間檢查一次緩存的有效信息。 open_file_cache_min_uses 1; open_file_cache指令中的inactive參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的,如上例,如果有一個文件在inactive時間內一次沒被使用,它將被移除。 } ##設定http服務器,利用它的反向代理功能提供負載均衡支持 http { include mime.types; 設定mime類型,類型由mime.type文件定義 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"'; log_format log404 '$status [$time_local] $remote_addr $host$request_uri $sent_http_location'; 日志格式設置。 $remote_addr與$http_x_forwarded_for用以記錄客戶端的ip地址; $remote_user:用來記錄客戶端用戶名稱; $time_local: 用來記錄訪問時間與時區; $request: 用來記錄請求的url與http協議; $status: 用來記錄請求狀態;成功是200, $body_bytes_sent :記錄發送給客戶端文件主體內容大小; $http_referer:用來記錄從那個頁面鏈接訪問過來的; $http_user_agent:記錄客戶瀏覽器的相關信息; 通常web服務器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理服務器的iP地址。反向代理服務器在轉發請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務器地址。 access_log logs/host.access.log main; access_log logs/host.access.404.log log404; 用了log_format指令設置了日志格式之后,需要用access_log指令指定日志文件的存放路徑; server_names_hash_bucket_size 128; #保存服務器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的。參數hash bucket size總是等於hash表的大小,並且是一路處理器緩存大小的倍數。在減少了在內存中的存取次數后,使在處理器中加速查找hash表鍵值成為可能。如果hash bucket size等於一路處理器緩存的大小,那么在查找鍵的時候,最壞的情況下在內存中查找的次數為2。第一次是確定存儲單元的地址,第二次是在存儲單元中查找鍵 值。因此,如果Nginx給出需要增大hash max size 或 hash bucket size的提示,那么首要的是增大前一個參數的大小. client_header_buffer_size 4k; 客戶端請求頭部的緩沖區大小。這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這里設置為分頁大小。分頁大小可以用命令getconf PAGESIZE取得。 large_client_header_buffers 8 128k; 客戶請求頭緩沖大小。nginx默認會用client_header_buffer_size這個buffer來讀取header值,如果 header過大,它會使用large_client_header_buffers來讀取。 open_file_cache max=102400 inactive=20s; 這個指令指定緩存是否啟用。 open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; open_file_cache_errors語法:open_file_cache_errors on | off 默認值:open_file_cache_errors off 使用字段:http, server, location 這個指令指定是否在搜索一個文件是記錄cache錯誤. open_file_cache_min_uses語法:open_file_cache_min_uses number 默認值:open_file_cache_min_uses 1 使用字段:http, server, location 這個指令指定了在open_file_cache指令無效的參數中一定的時間范圍內可以使用的最小文件數,如果使用更大的值,文件描述符在cache中總是打開狀態. open_file_cache_valid語法:open_file_cache_valid time 默認值:open_file_cache_valid 60 使用字段:http, server, location 這個指令指定了何時需要檢查open_file_cache中緩存項目的有效信息. client_max_body_size 300m; 設定通過nginx上傳文件的大小 sendfile on; sendfile指令指定 nginx 是否調用sendfile 函數(zero copy 方式)來輸出文件,對於普通應用,必須設為on。如果用來進行下載等應用磁盤IO重負載應用,可設置為off,以平衡磁盤與網絡IO處理速度,降低系統uptime。 tcp_nopush on; 此選項允許或禁止使用socke的TCP_CORK的選項,此選項僅在使用sendfile的時候使用 proxy_connect_timeout 90; 后端服務器連接的超時時間_發起握手等候響應超時時間 proxy_read_timeout 180; 連接成功后_等候后端服務器響應時間_其實已經進入后端的排隊之中等候處理(也可以說是后端服務器處理請求的時間) proxy_send_timeout 180; 后端服務器數據回傳時間_就是在規定時間之內后端服務器必須傳完所有的數據 proxy_buffer_size 256k; 設置從被代理服務器讀取的第一部分應答的緩沖區大小,通常情況下這部分應答中包含一個小的應答頭,默認情況下這個值的大小為指令proxy_buffers中指定的一個緩沖區的大小,不過可以將其設置為更小 proxy_buffers 4 256k; 設置用於讀取應答(來自被代理服務器)的緩沖區數目和大小,默認情況也為分頁大小,根據操作系統的不同可能是4k或者8k proxy_busy_buffers_size 256k; proxy_temp_file_write_size 256k; 設置在寫入proxy_temp_path時數據的大小,預防一個工作進程在傳遞文件時阻塞太長 proxy_temp_path /data0/proxy_temp_dir; proxy_temp_path和proxy_cache_path指定的路徑必須在同一分區 proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g; #設置內存緩存空間大小為200MB,1天沒有被訪問的內容自動清除,硬盤緩存空間大小為30GB。 keepalive_timeout 120; keepalive超時時間。 tcp_nodelay on; client_body_buffer_size 512k; 如果把它設置為比較大的數值,例如256k,那么,無論使用firefox還是IE瀏覽器,來提交任意小於256k的圖片,都很正常。如果注釋該指令,使用默認的client_body_buffer_size設置,也就是操作系統頁面大小的兩倍,8k或者16k,問題就出現了。 無論使用firefox4.0還是IE8.0,提交一個比較大,200k左右的圖片,都返回500 Internal Server Error錯誤 proxy_intercept_errors on; 表示使nginx阻止HTTP應答代碼為400或者更高的應答。 upstream bakend { server 127.0.0.1:8027; server 127.0.0.1:8028; server 127.0.0.1:8029; hash $request_uri; } nginx的upstream目前支持4種方式的分配 1、輪詢(默認) 每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。 2、weight 指定輪詢幾率,weight和訪問比率成正比,用於后端服務器性能不均的情況。 例如: upstream bakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } 2、ip_hash 每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。 例如: upstream bakend { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; } 3、fair(第三方) 按后端服務器的響應時間來分配請求,響應時間短的優先分配。 upstream backend { server server1; server server2; fair; } 4、url_hash(第三方) 按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效。 例:在upstream中加入hash語句,server語句中不能寫入weight等其他的參數,hash_method是使用的hash算法 upstream backend { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; } tips: upstream bakend{#定義負載均衡設備的Ip及設備狀態}{ ip_hash; server 127.0.0.1:9090 down; server 127.0.0.1:8080 weight=2; server 127.0.0.1:6060; server 127.0.0.1:7070 backup; } 在需要使用負載均衡的server中增加 proxy_pass http://bakend/; 每個設備的狀態設置為: 1.down表示單前的server暫時不參與負載 2.weight為weight越大,負載的權重就越大。 3.max_fails:允許請求失敗的次數默認為1.當超過最大次數時,返回proxy_next_upstream模塊定義的錯誤 4.fail_timeout:max_fails次失敗后,暫停的時間。 5.backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這台機器壓力會最輕。 nginx支持同時設置多組的負載均衡,用來給不用的server來使用。 client_body_in_file_only設置為On 可以講client post過來的數據記錄到文件中用來做debug client_body_temp_path設置記錄文件的目錄 可以設置最多3層目錄 location對URL進行匹配.可以進行重定向或者進行新的代理 負載均衡 ##配置虛擬機 server { listen 80; 配置監聽端口 server_name image.***.com; 配置訪問域名 location ~* \.(mp3|exe)$ { 對以“mp3或exe”結尾的地址進行負載均衡 proxy_pass http://img_relay$request_uri; 設置被代理服務器的端口或套接字,以及URL proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 以上三行,目的是將代理服務器收到的用戶的信息傳到真實服務器上 } location /face { if ($http_user_agent ~* "xnp") { rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect; } proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; error_page 404 502 = @fetch; } location @fetch { access_log /data/logs/face.log log404; rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect; } location /image { if ($http_user_agent ~* "xnp") { rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect; } proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; error_page 404 502 = @fetch; } location @fetch { access_log /data/logs/image.log log404; rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect; } } ##其他舉例 server { listen 80; server_name *.***.com *.***.cn; location ~* \.(mp3|exe)$ { proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { if ($http_user_agent ~* "xnp") { rewrite ^(.*)$ http://i1.***img.com/help/noimg.gif redirect; } proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #error_page 404 http://i1.***img.com/help/noimg.gif; error_page 404 502 = @fetch; } location @fetch { access_log /data/logs/baijiaqi.log log404; rewrite ^(.*)$ http://i1.***img.com/help/noimg.gif redirect; } } server { listen 80; server_name *.***img.com; location ~* \.(mp3|exe)$ { proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { if ($http_user_agent ~* "xnp") { rewrite ^(.*)$ http://i1.***img.com/help/noimg.gif; } proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #error_page 404 http://i1.***img.com/help/noimg.gif; error_page 404 = @fetch; } #access_log off; location @fetch { access_log /data/logs/baijiaqi.log log404; rewrite ^(.*)$ http://i1.***img.com/help/noimg.gif redirect; } } server { listen 8080; server_name ngx-ha.***img.com; location / { stub_status on; access_log off; } } server { listen 80; server_name imgsrc1.***.net; root html; } server { listen 80; server_name ***.com w.***.com; # access_log /usr/local/nginx/logs/access_log main; location / { rewrite ^(.*)$ http://www.***.com/ ; } } server { listen 80; server_name *******.com w.*******.com; # access_log /usr/local/nginx/logs/access_log main; location / { rewrite ^(.*)$ http://www.*******.com/; } } server { listen 80; server_name ******.com; # access_log /usr/local/nginx/logs/access_log main; location / { rewrite ^(.*)$ http://www.******.com/; } } location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; auth_basic_user_file conf/htpasswd; } #設定查看Nginx狀態的地址 location ~ /\.ht { deny all; } #禁止訪問.htxxx文件 } 注釋:變量 Ngx_http_core_module模塊支持內置變量,他們的名字和apache的內置變量是一致的。 首先是說明客戶請求title中的行,例如$http_user_agent,$http_cookie等等。 此外還有其它的一些變量 $args此變量與請求行中的參數相等 $content_length等於請求行的“Content_Length”的值。 $content_type等同與請求頭部的”Content_Type”的值 $document_root等同於當前請求的root指令指定的值 $document_uri與$uri一樣 $host與請求頭部中“Host”行指定的值或是request到達的server的名字(沒有Host行)一樣 $limit_rate允許限制的連接速率 $request_method等同於request的method,通常是“GET”或“POST” $remote_addr客戶端ip $remote_port客戶端port $remote_user等同於用戶名,由ngx_http_auth_basic_module認證 $request_filename當前請求的文件的路徑名,由root或alias和URI request組合而成 $request_body_file $request_uri含有參數的完整的初始URI $query_string與$args一樣 $sheeme http模式(http,https)盡在要求是評估例如 Rewrite ^(.+)$ $sheme://example.com$; Redirect; $server_protocol等同於request的協議,使用“HTTP/或“HTTP/ $server_addr request到達的server的ip,一般獲得此變量的值的目的是進行系統調用。為了避免系統調用,有必要在listen指令中指明ip,並使用bind參數。 $server_name請求到達的服務器名 $server_port請求到達的服務器的端口號 $uri等同於當前request中的URI,可不同於初始值,例如內部重定向時或使用index
====================其他優化配置====================
#調整vim tab鍵為4個空格
vim /etc/vimrc
set ts=4 set expandtab set autoindent
#selinux關閉
getenforce
#查看selinux狀態
vim /etc/selinux/config
SELINUX=disabled
#修改ulimit
cat /proc/sys/fs/file-max #查看系統最大限制
vim /etc/security/limits.conf
* soft nofile 32768 * hard nofile 65536
ulimit -n 65535 #臨時修改,重啟無效
end
