|
nginx.conf 配置解释
- 详解user www www;
- 定义 Nginx 运行的用户及组
- worker_processes 8; #[ debug | info | notice | warn | error | crit ]
- error_log /data1/logs/nginx_error.log crit; pid
- /usr/local/webserver/nginx/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process.
- worker_rlimit_nofile 65535;
- 一个 nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit
- -n) nginx 进程数相除,与但是 nginx 分配请求并不是那么均匀,所以最好与 ulimit -n的值保持一致。
- # use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];
- events use epoll; 参考事件模型
- worker_connections 65535; 每个进程最大连接数(最大连接=连接数 x 进程数) #设定 http 服务器
- http include
- mime.types; 文件扩展名与文件类型映射表
- default_type application/octet-stream; #默认文件类型
- #charset gb2312; 默认编码
- server_names_hash_bucket_size 128; #服务器名字的 hash 表大小
- client_header_buffer_size 32k; 上传文件大小限制
- large_client_header_buffers 4 32k; 设定请求缓
- client_max_body_size 8m; 设定请求缓
- sendfile on; #开启高效文件传输模式
- tcp_nopush
- on; 防止网络阻塞
- tcp_nodelay on; 防止网络阻塞
- keepalive_timeout 60; 超时时间
- #FastCGI 是为了改善网站的性能--减少资源占用,提高访问速度.有关 fastCGI 的
- 详细资料请参阅:http://www.fastcgi.com
- 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_temp_file_write_size 128k;
- gzip on;
- gzip_min_length 1k; #最小压缩文件大小
- gzip_buffers
- 4 16k; #压缩缓冲区
- gzip_http_version 1.0;
- #压缩版本(默认 1.1,前端为 squid2.5 使用 1.0
- gzip_comp_level 2; 压缩等级
- gzip_types
- text/plain application/x-javascript text/css application/xml;
- 压缩类型,默认就已经包含 text/html 所以下面就不用再写了,当然写上去的话,也
- 不会有问题,但是会有一个 warn
- gzip_vary on;
- #limit_zone crawler $binary_remote_addr 10m; server listen 80;
- server_name www.opendoc.com.cn
- index index.html index.htm index.php;
- root /data0/htdocs/opendoc;
- location ~ .*\.(php|php5)?$ #fastcgi_pass unix:/tmp/php-cgi.sock;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- include fcgi.conf; #对图片缓存
- location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ expires 30d; #对 JS CSS 缓存
- location ~ .*\.(js|css)?$ expires 1h; #日志设定
- log_format access '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';
- #日志的格式
- access_log /data1/logs/access.log access;
- }
nginx判断手机移动设备用户的方法
有两种方法
一种是用语言进行判断,比如用php的 $_SERVER['User-Agent']
还有一种是用nginx的来判断
- if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {
- // 添加你需要处理的语句,比如rewrite等
- }
可能一些设备可能没有识别的,大家可以看分析日志,然后把 User-Agent的关键字写到if里面~
nginx的配置文件if语句是不支持“并且”和“或者”这样的多重条件判断的。在一些情况下,我们又需要if语句进行多个条件的判断,那么如何来实现呢?我们可以利用nginx的set语句设置变量的方法来解决。
假设我们需要对 /123/ 路径进行rewrite,但同时要排除 /123/images/ 路径不对该路径进行rewrite,可以采用下面的解决办法:
- set $doRewrite "0";
- if ($request_uri ~ ^/123/) {
- set $doRewrite "1";
- }
- if ($request_uri ~ ^/123/images/) {
- set $doRewrite "0";
- }
- if ($doRewrite = "1") {
- // do rewrite
- }
还有一个实例
这个意思是 判断真是的ip,然后根据ip做一些操作~ 这里用的map映射
- map $http_x_forwarded_for $deny_access {
- default 0;
- 1.2.3.4 1;
- 1.2.3.5 1;
- 1.2.3.6 1;
- }
- if ($deny_access = 1) {
- return 403;
- }
防盗链的一些个配置
- location ~* \.(gif|png|jpg|bmp|swf|flv)$ {
- valid_referers none blocked www.ruifengyun.com ruifengyun.com;
- if ($invalid_referer) {
- return 403;
- }
- }
以上的例子可以实现扩展名为 gif,png,jpg,bmp,swf,flv的url防止被盗链。如果你需要其它的url防止被盗链,添加相应的后缀即可。
也可以 把return 403 替换成 #rewrite ^/ http://ruifnegyun.com/404.jpg; 这样可以用另一种方法推广自己的网站
nginx的限速的规则
配置简单,只需3行
- http{
- ……
- limit_zone one $binary_remote_addr 10m;
- ……
- server {
- location / {
- ……
- limit_conn one 2;
- limit_rate 40k;
- }
- }
- }
意思是:limit_zone针对每个IP定义一个存储session状态的容器。这个示例中定义了一个名叫one的10m大小的容器,这个名字会在后面的limit_conn中使用。limit_conn指定每个访客只能建立两条链接,limit_rate限制每条链接的速度不超过40K。所以,以上配置限制用户访问此站点总速度上限为80K。
|
|
|