1. Nginx配置文件的修改
修改nginx的默认配置文件:
1
| vi /etc/nginx/nginx.conf
|
按下面的内容修改Nginx的配置文件。兰色表示需要手动修改的内容,红色表示增加的内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| #user nobody; # 指定子进程数,酌情修改 worker_processes 4;
#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;
#pid logs/nginx.pid;
# 最多可打开文件数 worker_rlimit_nofile 8196;
events { # 最大并发数 worker_connections 1024; }
http { include mime.types; default_type application/octet-stream;
# 关掉错误日志 error_log /dev/null crit; # 如果需要错误日志,就用下面这行替换上面这行 #error_log /var/log/nginx/error.log notice;
# 定义日志格式,对日志使用缓存,避免频繁的磁盘I/O操作 access_log /var/log/nginx/access.log combined buffer=1m;
sendfile on; tcp_nopush on; tcp_nodelay on;
keepalive_timeout 10;
# 对静态文件和可压缩文件启用压缩,以节约网络带宽,提高访问速度 gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_http_version 1.1; gzip_comp_level 3; gzip_types text/html text/css text/xml text/plain application/x-javascript application/xml application/pdf application/x-perl application/x-tcl application/msword application/rtf application/vnd.ms-excel application/vnd.ms-powerpoint application/vnd.wap.xhtml+xml image/x-ms-bmp; gzip_disable ”MSIE [1-6] .”; gzip_vary on;
# 定义输出缓存大小 output_buffers 4 32k;
# 最大允许可上传文件大小 client_max_body_size 20m;
# 定义一个叫“myzone”的记录区,总容量为 10M # 和下面的limit_conn一起限制单个IP的并发连接数为10 limit_zone myzone $binary_remote_addr 10m;
server { listen 80; server_name localhost;
location / { root /var/nginx/html; index index.php index.html index.htm; limit_conn myzone 10; }
error_page 500 502 503 504 /50x.html;
location = /50x.html { root /var/nginx/html; }
location ~ .php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/nginx/html$fastcgi_script_name; include fastcgi_params; }
# 在浏览器本地暂存图片和静态文件,不记录日志,以节约机器资源 location ~* .(gif|png|jpg|jpeg|bmp|css|js|swf)$ { root /var/nginx/html; access_log off; expires max; }
# 在浏览器中输入http://xxx.xxx.xxx/status可以看到Nginx的运行信息 # 需要密码验证,不记录日志,限制IP访问 location ~ /status { auth_basic ”O.N.M.P.”; auth_basic_user_file password; stub_status on; access_log off; allow 192.168.0.0/24; deny all; } }
}
|
其他的部分请酌情修改。
运行下面的命令生成查看Nginx运行状态的密码文件:
1
| htpasswd -c /etc/nginx/password webadmin
|
按提示输入两遍密码即可。
在查看status的时候,输入用户名webadmin(见上面这行)和密码就能够看到Nginx的运行数据了。
Nginx能够流行和它的高负载能力是分不开的,在追求性能表现的场合,推荐使用Nginx+PHP-fastcgi的组合以获得强健的性能表现。而对于那些重视安全性的场合来说,可能OpenBSD内核集成的Apache更合适。OpenBSD下搭建Apache、MySQL、PHP环境的详细内容请参见偶的另篇博文,地址在下面:(博客速度可能较慢,四楼有转帖)http://blog.chinaunix.net/u2/81136/showart_1860332.html
当然,你也可以利用Nginx内置的负载均衡功能,在前端分配访问流量,后端由Apache来运行PHP环境。Nginx负载均衡的配置可以去Nginx的主页参看相关内容,地址:http://wiki.nginx.org/Main。
下面为一个Nginx负载均衡的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| http { upstream myproject { ip_hash; server 192.168.1.1:80; server 192.168.1.2:80; server 192.168.1.3:80; server 192.168.1.4:80; } server { listen 80; server_name www.domain.com; location / { proxy_pass http://myproject; } } }
|
网络拓扑示意图如下:

2. Nginx日志截断
OpenBSD默认每天00:00会执行/etc/daily.local
脚本中的内容,我们只需要把Nginx日志截断的命令加入到这个文件中即可。
加入下面的内容:
1 2 3 4 5 6 7 8
| #!/bin/sh # 对Nginx日志进行截断和压缩,以节约log分区空间 # 在张宴的基础上修改,感谢! mkdir -p /var/log/nginx/$(date -d “yesterday” +”%Y”)/$(date -d “yesterday” +”%m”)/ mv /var/log/nginx/access.log /var/log/nginx/$(date -d “yesterday” +”%Y”)/$(date -d “yesterday” +”%m”)/access.$(date -d “yesterday” +”%Y%m%d”).log kill -USR1 `cat /var/run/nginx.pid` sleep 1 gzip /var/log/nginx/$(date -d “yesterday” +”%Y”)/$(date -d “yesterday” +”%m”)/access.$(date -d “yesterday” +”%Y%m%d”).log
|
保存退出,为/etc/daily.local加上执行权限:
1
| chmod 0755 /etc/daily.local
|
其他需要每天运行的命令也都可以加在这个脚本里面,各位自行处理。