涉及三類配置文件 1. 基礎文件 conf/nginx.conf # 說明:nginx默認會引用該文件,該文件會作最通用的參數設置 2. fastcgi參數文件 conf/fastcgi.conf # 說明:fastcgi會設置全部站點通用參數 3. 站點文件 如:conf/vhost/a.com.conf 能夠有多個,放在vhost文件夾下 彼此引用說明 在基礎文件conf/nginx.conf中插入include *.conf 引用站點文件 站點文件中合適位置插入include fastcgi.conf 設置fastcgi,若是要覆蓋參數,能夠在引用再賦值一次便可
nginx配置文件裏指令的繼承關係:Nginx配置文件分爲好多塊,常見的從外到內依次是「http」、「server」、「location」等等,缺省的繼承關係是從外到內,也就是說內層塊會自動獲取外層塊的值做爲缺省值javascript
值得參考的文章:http://huoding.com/2013/10/23/290php
nginx.conf中設置基礎參數,內容以下:css
#用戶及用戶組設置 user www www; worker_processes 1; #錯誤級別的日誌設置 error_log logs/error.log; #其餘級別的日誌設置 #error_log logs/error.log notice; #error_log logs/error.log info; pid logs/nginx.pid; events { use epoll; worker_connections 1024; } http { #fastcgi_intercept_errors on; #error_page 404 ; include mime.types; 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"'; #access_log logs/access.log main; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 300m; sendfile on; tcp_nopush on; fastcgi_connect_timeout 300; 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 128k; #keepalive_timeout 0; keepalive_timeout 60; tcp_nodelay on; server_tokens off; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; #未綁定域名返回404 server { listen 80 default; fastcgi_intercept_errors on; error_page 404 /404.html; location /404.html { root /data/web/404; internal; } } #加載每一個站點conf文件 include vhost/*.conf; }
單個站點conf文件放在conf/vhost文件夾下,好比創建一個a.com.conf,內容見下方:html
server { #監聽端口 listen 80; #request大小 client_max_body_size 50M; #綁定域名,用空格分開多個域名 server_name a.com www.a.com; #不帶www域名作301跳轉 if ( $host != 'www.a.com' ) { #return方法,效率更高 return 301 http://www.a.com$request_uri; #rewrite寫法 #rewrite ^/(.*)$ http://www.a.com/$1 permanent; } #默認首頁 index index.php index.html index.htm; #站點目錄 set $root_path '/data/wwwroot/a.com/web/'; root $root_path; #日誌前綴設置 #set $log 'a.com' #訪問日誌 #access_log logs/$log_access.log main; #錯誤日誌 #error_log logs/$log_error.log; #僞靜態 location / { #ci框架 #try_files $uri $uri/ /index.php?$query_string; #phalcon框架 #try_files $uri $uri/ /index.php?_url=$uri&$args; } #php文件採用fastcgi解析並設置參數 location ~ \.php { fastcgi_index /index.php; fastcgi_pass 127.0.0.1:9000; #加載fastcgi.conf文件中的參數 include fastcgi.conf; #設置有權限目錄,fastcgi.conf中默認設置就是站點目錄$document_root,若是要改變就須要從新賦值 #phalcon或laravel舉例 #fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root../:/data/tmp/php/upload/:/proc/"; } #禁止下載僞靜態文件 location ~ /\.ht { deny all; } }
conf/fastcgi.conf內容:java
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; # 用一個文件或狀態碼(=404)做爲最後一個參數,若是是最後一個參數是文件,那麼這個文件必須存在 try_files $fastcgi_script_name = 404; #能夠自定義值,好比區分開發(dev)和生成環境(product),在php中用getenv('MY_ENV')或$_SERVER['MY_ENV']獲取 fastcgi_param MY_ENV "product"; #防跨站設置 fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root:/data/tmp/php/upload/:/proc/";
須要說明的:Nginx有兩份fastcgi配置文件,分別是舊的「fastcgi_params」和新的「fastcgi.conf」,它們沒有太大的差別,惟一的區別是後者比前者多了一行「SCRIPT_FILENAME」的定義,只須要引用一份新的配置文件fastcgi.conf便可node
fastcgi參數說明,參考:http://www.ivpeng.com/pblog/cgi-arg.htmlnginx
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#腳本文件請求的路徑 fastcgi_param QUERY_STRING $query_string; #請求的參數;如?app=123 fastcgi_param REQUEST_METHOD $request_method; #請求的動做(GET,POST) fastcgi_param CONTENT_TYPE $content_type; #請求頭中的Content-Type字段 fastcgi_param CONTENT_LENGTH $content_length; #請求頭中的Content-length字段。 fastcgi_param SCRIPT_NAME $fastcgi_script_name; #腳本名稱 fastcgi_param REQUEST_URI $request_uri; #請求的地址不帶參數 fastcgi_param DOCUMENT_URI $document_uri; #與$uri相同。 fastcgi_param DOCUMENT_ROOT $document_root; #網站的根目錄。在server配置中root指令中指定的值 fastcgi_param SERVER_PROTOCOL $server_protocol; #請求使用的協議,一般是HTTP/1.0或HTTP/1.1。 fastcgi_param GATEWAY_INTERFACE CGI/1.1;#cgi 版本 fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;#nginx 版本號,可修改、隱藏 fastcgi_param REMOTE_ADDR $remote_addr; #客戶端IP fastcgi_param REMOTE_PORT $remote_port; #客戶端端口 fastcgi_param SERVER_ADDR $server_addr; #服務器IP地址 fastcgi_param SERVER_PORT $server_port; #服務器端口 fastcgi_param SERVER_NAME $server_name; #服務器名,域名在server配置中指定的server_name #fastcgi_param PATH_INFO $path_info;#可自定義變量 # PHP only, required if PHP was built with –enable-force-cgi-redirect #fastcgi_param REDIRECT_STATUS 200; 在php可打印出上面的服務環境變量 如:echo $_SERVER['MY_ENV'] //只適配nginx,不適用cli模式,cli模式必須設置系統變量,mac下在~/.bash_profile
https://moonbingbing.gitbooks.io/openresty-best-practices/content/openresty/inline_var.htmllaravel
注:php.5.6默認是utf-8,必須改爲自動適配git
# php.ini裏面的配置 ; default_charset = "UTF-8" #不能註釋,必須改爲下面的形式,否則仍是默認utf-8 default_charset = ""
https://www.lyblog.net/detail/600.htmlweb
須要說明的是:rewrite regex replacement [flag]; regex指的是url中的字符串
location / { rewrite ^/news-(\d+).html$ /news.php?cat_id=$1 last; #將news.php?cat_id=110僞靜態成news-110.html }
參考1:http://www.laruence.com/2009/11/13/1138.html
參考2:http://www.laruence.com/2009/11/13/1138.html
在http{}或者server中的location / {}中添加以下代碼便可:
ssi on; ssi_silent_errors on; ssi_types text/shtml;