Nginx虚拟主机
1、修改配置文件
# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
# vim /usr/local/nginx/conf/nginx.conf
清空里面内容,添加如下:
全局配置:
user www; // 指定Nginx Worker进程运行用户,默认由nobody用户运行。
worker_processes 1; // 指定nginx要开启的进程数。不能超过CPU核心数
#pid logs/nginx.pid; // 指定存储nginx进程id的文件
worker_rlimit_nofile 65535; // 更改worker进程的最大打开文件数限制,如果没设置的话,这个值为操作系统的限制。
设置后你的操作系统和Nginx可以处理比“ulimit -a”更多的文件,所以把这个值设高,这样nginx就不会有“too many open files”问题了。
在下面设置worker_connections的值时是不能超过这个值的
注释:安装好nginx之后,默认最大的并发数为1024,如果网站访问量过大,已经远远超过1024这个并发数,那你就要修改worker_connecions这个值 ,这个值越大,
并发数也有就大。当然,一定要按照自己的实际情况而定,也不能设置太大,不能让CPU跑满100%。
所以,当修改提高了配置文件中的worker_connections值大于worker_rlimit_nofile的值,然后重启nginx,就会在日志里发现warn警告提示,
大概的意思就是: 如XXXX并发连接已经超过了打开文件的资源限制:1024!在这种情况下,就要修改配置文件,添加一行来解除这个限制。
打开配置文件在"event"这行上面添加这一行:
worker_rlimit_nofile xxxxx; ####Specifies the value for maximum file descriptors that can be opened by this process.
注意:设置了这个后,你修改worker_connections值时,是不能超过worker_rlimit_nofile的这个值,不然又会有那个warn提示。
events {
use epoll; // use用来指定nginx的工作模式:select,poll,kqueue,epoll
标准:select,poll 高效:kqueue,epoll
不同是epoll用在Linux平台,而kqueue用在BSD系统中,对于Linux系统,
epoll工作模式是首选。epoll能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
worker_connections 65535; //单个进程最大连接数,设置nginx连接数的上限总连接数=worker_processes x worker_connections
}
http {
include mime.types; // 实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。
default_type application/octet-stream; // 默认的类型为二进制流,即当文件类型未定义时使用这种方式,
例如在没有配置php环境时,nginx是不予解析的,这时浏览器访问php会出现下载窗口。
connection_pool_size 256; //连接池大小
client_max_body_size 20m; // 设定请求缓
client_header_buffer_size 32k; //上传文件大小限制
large_client_header_buffers 4 8k; //设定请求缓
sendfile on; // 开启高效文件传输模式
tcp_nopush on; // 用于防止网络阻塞
tcp_nodelay on; //禁用了Nagle 算法,告诉nginx不要缓存数据,而是一段一段的发送–当需要及时发送数据时,就应该给应用设置这个属性,
这样发送一小块数据信息时就不能立即得到返回值。
注释:假设某个应用程序发出了一个请求,希望发送小块数据。我们可以选择立即发送数据或者等待产生更多的数据然后再一次发送两种策略。
如果我们马上发送数据,那么交互性的以及客户/服务器型的应用程序将极大地受益。如果请求立即发出那么响应时间也会快一些。
以上操作可以通过设置套接字的 TCP_NODELAY = on 选项来完成,这样就禁用了Nagle 算法。
另外一种情况则需要我们等到数据量达到最大时才通过网络一次发送全部数据,这种数据传输方式有益于大量数据的通信性能,典型的应用就是文件服务器
keepalive_timeout 60; // 设置客户端连接保持活动的超时时间。超过这个超时时间之后服务器会关闭该连接。
client_header_timeout 10; //client_header_timeout 和client_body_timeout 设置请求头和请求体(各自)的超时时间。我们也可以把这个设置低些。
client_body_timeout 10;
send_timeout 10; //指定客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,
客户端没有读取任何数据,nginx就会关闭连接。
gzip on; // 表示开启gzip压缩,实时压缩输出数据流。
gzip_min_length 1k; //设置对数据启用压缩的最少字节数。如果一个请求小于1000字节,我们最好不要压缩它,
因为压缩这些小的数据会降低处理此请求的所有进程的速度。
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2; //设置数据的压缩等级。这个等级可以是1-9之间的任意数值,9是最慢但是压缩比最大的。我们设置为4,这是一个比较折中的设置。
gzip_types text/plain application/x-javascript text/css aplication/xml; //设置需要压缩的数据格式。
gzip_vary on;
//FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
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_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
log_format www '$remote_addr - $remote_user [$time_local] "$request" ' // 指定日志的输出格式
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
listen 8000; // 监听端口,服务器端口
server_name localhost; // 服务器的IP地址或者域名,多个域名之间用空格分隔
location / {
stub_status on; // on表示启用StudStatus的工作状态统计功能。
access_log off; // 指定该模块的访问日志文件,将其关闭
}
# location / {
# auth_basic "Administrator Login";
# auth_basic_user_file /usr/local/nginx/conf/auth.passwd; // 指定认证密码文件
# }
}
# server {
# listen 80 default default_server;
# server_name _;
include vhosts/*.conf; //指定虚拟主机的配置文件位置
}
# mkdir /usr/local/nginx/conf/vhosts
# cd /usr/local/nginx/conf/vhosts
# vim html.conf
server {
listen 80;
server_name localhost;
index index.html;
root /data/htdocs/html; //虚拟主机根目录
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { //对图片,flash文件在浏览器本地缓存30天,图片文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点
expires 30d;
}
PC:对于站点中不经常修改的静态内容(如图片,js,css),可以在服务器中设置expires过期时间,控制浏览器缓存,达到有效减小带宽流量,降低服务器压力的目的。要配置expires,可以在http段中或者server段中或者location段中加入,expires语法:expires [time|epoch|max|off],默认值:expires off
注意:expires仅仅适用于200, 204, 301, 302,和304应答
location ~ .*\.(js|css)?$ { //对js,css文件在浏览器本地缓存1小时
expires 1h;
}
access_log /data/logs/www/index_access.log www;
error_log /data/logs/www/index_error.log;
}
# mkdir -pv /data/logs/www
#mkdir -pv /data/htdocs/html
# chown www.www /data/htdocs/ -R
# chown www.www /data/logs/ -R
# /etc/init.d/nginx restart