核心做法:
三类文件
1. 基础文件 conf/nginx.conf
# 说明:nginx默认会引用该文件
2. fastcgi参数文件 conf/nginx.conf
# 说明 fastcgi会设置所有站点都通用的参数
3. 站点文件 如:conf/vhost/a.com 可以有多个,放在vhost文件夹下
彼此引用说明
在基础文件conf/nginx.conf中插入include *.conf 引用站点文件
站点文件中合适位置插入include fastcgi.conf 设置fastcgi,如果要覆盖参数,可以在引用再赋值一次即可
详细说明:
nginx.conf中设置基础参数,内容如下:
#用户及用户组设置
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;
return 404;
}
#加载每个站点conf文件
include vhost/*.conf;
}
单个站点conf文件放在vhost文件夹下,比如建立一个a.com.conf,内容见下方:
server {
#监听端口
listen 80;
#绑定域名,用空格分开多个域名
server_name a.com www.a.com;
#默认首页
index index.php index.html index.htm;
#站点目录
set $root_path '/data/wwwroot/a.com/web';
root $root_path;
#访问日志
#access_log logs/a.com_access.log main;
#错误日志
#error_log logs/$host_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中默认设置就是站点目录,如果要改变就需要重新赋值
#phalcon举例
#fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/../:/data/tmp/php/upload/:/proc/";
}
#禁止下载伪静态文件
location ~ /\.ht {
deny all;
}
}
fastcgi.conf内容:
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;
#防跨站设置
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/data/tmp/php/upload/:/proc/";