Record the configuration file description of the Nginx server nginx.conf here, and some comments are collected from the network.
user www-data; #Run user
worker_processes 1; #Start the process, usually set to be equal to the number of CPUs
error_log /var/log/nginx/error.log; #Global error log and PID file
pid /var/run/nginx.pid;
events {
use epoll; #Working mode and connection limit#epoll is a way of multiplexing IO (I/O Multiplexing), but it is only used for kernels above linux 2.6, which can greatly improve the performance of nginx
worker_connections 1024;
#The maximum number of concurrent connections for a single background worker process process
# multi_accept on;
}#Set up the http server and use its reverse proxy function to provide load balancing support
http {
include /etc/nginx/mime.types; #Set the mime type, the type is defined by the mime.type file
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; #Set the log format
sendfile on; The #sendfile instruction specifies whether nginx calls the sendfile function (zero copy mode) to output files . For ordinary applications, it must be set to on. If it is used for downloading applications such as applications with heavy disk IO load, it can be set to off to balance Disk and network I/O processing speed, reduce system uptime.
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65; #连接超时时间
tcp_nodelay on;
gzip on; #开启gzip压缩
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
client_header_buffer_size 1k; #设定请求缓冲
large_client_header_buffers 44k;include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
#设定负载均衡的服务器列表
upstream mysvr {
server 192.168.8.1:3128 weight=5; #本机上的Squid开启3128端口
server 192.168.8.2:80 weight=1;
server 192.168.8.3:80 weight=6; #weigth参数表示权值,权值越高被分配到的几率越大
}
server {
listen 80; #侦听80端口
server_name www.xx.com; #定义使用www.xx.com访问access_log logs/www.xx.com.access.log main;
#设定本虚拟主机的访问日志#默认请求
location / { #location允许对不同的URL使用不同的配置,即可以使用字符串也可以使用与正则表达式。
root /root; #定义服务器的默认网站根目录位置
index index.php index.html index.htm; #定义首页索引文件的名称fastcgi_pass www.xx.com;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
error_page 500 502 503 504 /50x.html; # 如果出现指定的http错误状态码,则返回给客户端指定的url地址。
location = /50x.html {
root /root;
}
-----------------------------------
生产环境中一例(29.70-video部分):(aaron 2011-08-11)
error_page 404 = @fetch; #如果响应错误代码的页面是php等FastCGI程序,则最好在error_page中加上等号,如本例示
location @fetch { #location项允许对不同的路径进行不同的配置。@为一命名标记,不会处理正常请求,只会处理内部重定向。
internal; #设定某个location路径只能在内部使用,不能用于外部。
proxy_store on; #存储从后端服务器传过来的文件。
proxy_next_upstream error timeout http_500 http_503 http_404;
#在哪种情况下将请求转发到负载均衡代理服务器池中的下一台服务器。
proxy_store_access user:rw group:rw all:r;
#指定用于创建文件和目录的权限。
proxy_temp_path /tmp; #指定用于缓冲较大代理请求的本地路径。
proxy_set_header Host root.video.att.xinpindao.com;
#在转发给反向代理服务器(后端)的信息中重新定义或者设置header行。(即更改转发给反向代理服务器的信息)
proxy_set_header referer http://video.att.xinpindao.com;
proxy_pass http://video.backend; #设置被代理服务器的端口或套接字,以及URL。
#default root same as server root
#root /data/attachment/video;
}
------------------------------------------
#静态文件,nginx自己处理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
root /var/www/virtual/htdocs;
expires 30d; #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
}
#PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
location ~ \.php$ {
root /root;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name;
include fastcgi_params;
}
#设定查看Nginx状态的地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
}
#禁止访问 .htxxx 文件
location ~ /\.ht {
deny all;
}
}
}
以上是一些基本的配置,使用Nginx最大的好处就是负载均衡
如果要使用负载均衡的话,可以修改配置http节点如下:
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
include /etc/nginx/mime.types; #设定mime类型,类型由mime.type文件定义
default_type application/octet-stream;
access_log /var/log/nginx/access.log; #设定日志格式#省略上文有的一些配置节点
#。。。。。。。。。。
#设定负载均衡的服务器列表
upstream mysvr { #upstream指令用于设置一组可以在proxy_pass指令中使用的代理服务器,默认的代理方式为轮询。
server 192.168.8.1x:3128 weight=5;#本机上的Squid开启3128端口
server 192.168.8.2x:80 weight=1; #server指令用于指定后端服务器的名称和参数。
server 192.168.8.3x:80 weight=6; #weigth参数表示权值,权值越高被分配到的几率越大
}upstream mysvr2 {
server 192.168.8.x:80 weight=1;server 192.168.8.x:80 weight=6; #weigth参数表示权值,权值越高被分配到的几率越大
}#第一个虚拟服务器
server { #在server{...}虚拟主机内可通过proxy_pass指令设置关于反向代理的upstream服务器集群。
listen 80; #侦听192.168.8.x的80端口
server_name 192.168.8.x;
location ~ .*\.aspx$ { #对aspx后缀的进行负载均衡请求root /root; #定义服务器的默认网站根目录位置
index index.php index.html index.htm; #定义首页索引文件的名称proxy_pass http://mysvr ; #请求转向mysvr 定义的服务器列表
#以下是一些反向代理的配置可删除.
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传}
}
}