user www www; #配置用户或者组,默认为nobody nobody。
worker_processes auto; #允许生成的进程数,默认为1
error_log /data/wwwlogs/error_nginx.log crit; #错误日志
pid /var/run/nginx.pid; #指定nginx进程运行文件存放地址
worker_rlimit_nofile 51200; #指定一个nginx进程可以打开的最多文件描述符数目
events {
use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 51200; #最大连接数,默认为512
multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
}
http {
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain
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 32k; #与client_body_buffer_size类似。 它为请求头分配一个缓冲区。 如果请求头大小大于指定的缓冲区,则使用large_client_header_buffers指令分配更大的缓冲区
large_client_header_buffers 4 32k; #规定了用于读取大型客户端请求头的缓冲区的最大数量和大小。 这些缓冲区仅在缺省缓冲区不足时按需分配。 当处理请求或连接转换到保持活动状态时,释放缓冲区。
client_max_body_size 1024m; #设置NGINX能处理的最大请求主体大小。 如果请求大于指定的大小,则NGINX发回HTTP 413(Request Entity too large)错误。 如果服务器处理大文件上传,则该指令非常重要。
client_body_buffer_size 10m; #此指令设置用于请求主体的缓冲区大小。
log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义日志格式
sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
tcp_nopush on;
sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
keepalive_timeout 120; #连接超时时间,默认为75s,可以在http,server,location块。
server_tokens off;
tcp_nodelay on;
autoindex on; #开启nginx目录浏览功能
autoindex_exact_size off; #文件大小从KB开始显示
autoindex_localtime on; #显示文件修改时间为服务器本地时间
fastcgi_connect_timeout 300; #指定nginx与后端fastcgi server连接超时时间
fastcgi_send_timeout 300; #指定nginx向后端传送请求超时时间(指已完成两次握手后向fastcgi传送请求超时时间)
fastcgi_read_timeout 300; #指定nginx接受后端fastcgi响应请求超时时间 (指已完成两次握手后nginx接受fastcgi响应请求超时时间)
fastcgi_buffer_size 64k; #指定nginx读取fastcgi响应第一部分需要用多大的缓冲区,这个值表示将使用一个64kb的缓冲区响应第一部分应答(应答头)可以设置为fastcgi_buffers缓存区大小
fastcgi_buffers 4 64k; #指nginx需要用多大的缓冲区缓冲fastcgi的应答请求(整个应答),如果一个php脚本所产生的页面大小为256kb,那么会分配4个64kb缓冲区来缓存,如果页面大于256kb,那么大于256kb的部分会缓存到fastcgi_temp指定的路径中,但是因为内存中数据处理远快于磁盘, 所以这个值应该为站点中php所产生的页面大小的中间值, 如果站点大部分php脚本产生的页面为:256kb, 那么可以设置成成"8 16k 4 64k"
fastcgi_busy_buffers_size 128k; #整个数据请求需要多大的缓存区,建议设置为fastcgi_buffers值的两倍
fastcgi_temp_file_write_size 128k; #写入缓存文件使用多大的数据块,默认值是fastcgi_buffer值的2倍
fastcgi_intercept_errors on; #开启error_page跳转页面
#Gzip Compression
gzip on; #开启gzip
gzip_buffers 16 8k; #缓冲(压缩在内存中缓冲几块? 每块多大?)
gzip_comp_level 6; #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)
gzip_http_version 1.1; #开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)
gzip_min_length 256; #开始压缩的最小长度(再小就不要压缩了,意义不在)
gzip_proxied any; #设置请求者代理服务器,该如何缓存内容
gzip_vary on; #是否传输gzip压缩标志
gzip_types #对哪些类型的文件用压缩 如txt,xml,html ,css
text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
text/javascript application/javascript application/x-javascript
text/x-json application/json application/x-web-app-manifest+json
text/css text/plain text/x-component
font/opentype application/x-font-ttf application/vnd.ms-fontobject
image/x-icon;
gzip_disable "MSIE [1-6]\.(?!.*SV1)"; #正则匹配UA 什么样的Uri不进行gzip
open_file_cache max=1000 inactive=20s; #max=1000 表示设置缓存文件的最大数目为 1000, 超过此数字后 Nginx 将按照 LRU 原则丢弃冷数据。inactive=20s 与 open_file_cache_min_uses 2 表示如果在 20 秒内某文件被访问的次数低于 2 次,那就将它从缓存中删除。
open_file_cache_valid 30s; #这个是指多长时间检查一次缓存的有效信息。也就是说即使我一直访问这个文件,30s后会检查此文件的更改信息是否变化,发现变化就更新。
open_file_cache_min_uses 2; #指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件更改信息一直是在缓存中打开的。
open_file_cache_errors on; #指定了当搜索一个文件时是否缓存错误信息,也包括再次给配置中添加文件。我们也包括了服务器模块,这些是在不同文件中定义的。如果你的服务器模块不在这些位置,你就得修改这一行来指定正确的位置。
server {
listen 80;
server_name _;
access_log /data/wwwlogs/access_nginx.log combined; #访问日志
root /data/wwwroot/default;
index index.html index.htm index.php;
#错误跳转页面
error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 506 /error.html;
location /error.html {
root /data/www/wwwroot; #指定error.html文件所在目录
}
location /nginx_status {
stub_status on; #开启Nginx的一些状态信息
access_log off; #关闭访问日志
allow 127.0.0.1; #允许一个ip或者ip段访问
deny all; #禁止一个ip或者ip段访问
}
location ~ [^/]\.php(/|$) {
#fastcgi_pass 127.0.0.1:9000; #表示nginx通过fastcgi_pass将用户请求的资源发给127.0.0.1:9000进行解析,这里的nginx和php脚本解析服务器是在同一台机器上,所以127.0.0.1:9000表示的就是本地的php脚本解析服务器。
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php; #默认首页文件
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
expires 30d; #数据缓存30天 s秒 m分 h小时 d天
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
location ~ /\.ht {
deny all;
}
}
include vhost/*.conf; #引入配置文件
}
access_log #用来指定日志文件的路径及使用的何种日志格式记录日志
error_log #用来知道错误日志文件的路基及使用何种级别记录日志,常见的错误日志级别有[debug | info | notice
配置Thinkphp
server {
listen 80;
server_name tp3.xx.cn;
access_log /data/wwwlogs/access/tp3.log main;
error_log /data/wwwlogs/error/tp3.log error;
index index.html index.htm index.php;
root /data/wwwroot/tp3;
#错误跳转页面
error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 506 /error.html;
location /error.html {
root /data/www/wwwroot;
}
location / {
index index.htm index.html index.php;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
location ~ /\.ht {
deny all;
}
}
配置laravel
server {
listen 80;
server_name laravel.xx.cn;
access_log /data/wwwlogs/access/laravel.log combined;
error_log /data/wwwlogs/error/laravel.log error;
index index.html index.htm index.php;
root /data/wwwroot/laravel/public;
add_header X-Frame-Options "SAMEORIGIN"; #表示该页面可以在相同域名页面的frame中展示,DENY表示该页面不允许在frame中展示,ALLOW-FROM url表示指定该页面可以在指定源的fram中展示
add_header X-XSS-Protection "1; mode=block"; #如果找到XSS,则不要渲染文档
add_header X-Content-Type-Options "nosniff"; #对script 和 styleSheet 元素会拒绝包含错误的 MIME 类型的响应。这是一种安全功能,有助于防止基于 MIME 类型混淆的攻击。
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; } #访问favicon.ico文件时关闭访问日志,并且不在error_log中记录不存在的错误
location = /robots.txt { access_log off; log_not_found off; } #访问robots.txt文件时关闭访问日志,并且不在error_log中记录不存在的错误
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$; #Nginx默认获取不到PATH_INFO的值,得通过fastcgi_split_path_info指定定义的正则表达式来给$fastcgi_path_info赋值。
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
配置phalcon
server {
listen 80;
server_name phalcon.xx.cn;
access_log /data/wwwlogs/access/phalcon.log combined;
error_log /data/wwwlogs/error/phalcon.log error;
root /data/wwwroot/phalcon/public;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?_url=$uri&$args;
}
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
location ~ /\.ht {
deny all;
}
}