今天我们来学一学nginx的配置文件,nginx的配置文件由以下5部分构成:
全局块
,events块
,http块
,server块
,location块
。
nginx文件结构
# 全局块
...
# events块
events {
...
}
# http块
http {
... # http全局块
server { # server块
... # server全局块
location [PATTERN] { # location块
...
}
...
}
server {
...
}
...
}
- 全局块,nginx全局指令。常见的全局指令有
user
:设置用户,这里为什么要设置用户呢?因为linux里所有的程序都是文件,具有权限的问题,设置用户,指定用户对特定的文件是否有权限访问。worker_processes
:开启的线程数,一般设置为跟cpu核数一致。error_log
:配置错误日志的放置位置。pid
:配置pid的存放位置。
- events块,配置影响nginx服务器或与用户的网络连接
- http块,配置http服务器的配置,可以嵌套多个server。
- server块,配置虚拟主机的相关参数。
- location块,配置路由的请求。
nginx配置实例
user root; #配置用户组
worker_processes auto; #允许生成的进程数
error_log logs/error.log; #配置日志路径
pid logs/nginx.pid; #指定nginx进程运行的文件路径
events {
worker_connections 1024; #配置最大连接数
}
http {
include mime.types; #文件扩展名与文件类型的映射表
default_type application/octet-stream; #文件类型
sendfile on; #允许sendfile方式传输文件
keepalive_timeout 65; #连接超时时间
server {
listen 80; #监听的端口
server_name dev.me.hyh; #域名配置
root /var/www/me; #根目录
proxy_set_header X-Real-IP $remote_addr; #真实的IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #获得真实的IP
location ~ \.php($|/) { #配置php解析
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
include fiery_fastcgi_params;
fastcgi_split_path_info. ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_NAME $script;
fastcgi_param PATH_INFO $path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 1200;
}
localhost ~ /\.ht {
deny all; #禁止所有以/.ht结尾的路径
}
location ~ .*\.(js|css)?$ {
expires 12h; #设置12小时的缓存
}
gzip on; #gzip压缩的配置
gzip_disable "msie6";
gzip_min_length 1k;
gizp_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php;
gzip_vary on;
}
}