Simple Nginx 3

内核参数优化

修改sysctl.conf,增加以下内容:

vim sysctl.conf

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1800
net.ipv4.ip_conntrack_max = 16777216 # 如果使用默认参数,容易出现网络丢包
net.ipv4.netfilter.ip_conntrack_max = 16777216# 如果使用默认参数,容易出现网络丢包
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog =  32768
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries =
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.ip_local_port_range = 1024  65535

生效配置:

sysctl –p

修改iptables启动脚本,在star()函数里面加上:

vim /etc/init.d/iptables
/sbin/sysctl  -p

配置范例站点

















序号 域名 目录
1 www.heytool.com /www/html/www.heytool.com
2 bbs.heytool.com /www/html/bbs.heytool.com

修改Nginx配置文件

vim nginx.conf

user  nobody nobody;                                # 运行nginx的所属组和所有者
worker_processes  2;                                # 开启两个nginx工作进程,一般几个CPU核心就写几
error_log  logs/error.log  notice;                  # 错误日志路径
pid        logs/nginx.pid; # pid路径
events {
    worker_connections  1024;                       # 一个进程能同时处理1024个请求
}
http {
    include       mime.types;
    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;              # 默认访问日志路径
    sendfile        on;
    keepalive_timeout  65;                          # keepalive超时时间

    # 开始配置一个域名,一个server配置段一般对应一个域名

    server {
        listen       80;                            # 在本机所有ip上监听80,也可以写为192.168.1.202:80,这样的话,就只监听192.168.1.202上的80口
        server_name  www.heytool.com;               # 域名
        root   /www/html/www.heytool.com;           # 站点根目录(程序目录)
        index  index.html index.htm;                # 索引页文件
        location / {  # 可以有多个location
            root   /www/html/www.heytool.com;       # 站点根目录(程序目录)
        }

        error_page   500 502 503 504  /50x.html;    # 定义错误页面,如果是500错误,则把站点根目录下的50x.html返回给用户
        location = /50x.html {
            root   /www/html/www.heytool.com;
        }
    }

    # 开始配置站点bbs.heytool.com

    server {
        listen       80;
        server_name  bbs.heytool.com;
        root   /www/html/bbs.heytool.com;
        index  index.html index.htm;
        location / {
            root   /www/html/bbs.heytool.com;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /www/html/bbs.heytool.com;
        }
    }
}

root和alias文件路径配置

Nginx指定文件路径有两种方式,root和alias,主要区别在于如何杰斯location后面的uri,这会使两者以不同的方式将请求映射到服务器文件上.

使用语法:

[root]
语法:root path
默认值:root html
配置段:http、server、location、if

[alias]
语法:alias path
配置段:location

root实例:

location ~ ^/weblogs/ {
 root /data/weblogs/www.ttlsa.com;          # path
 autoindex on;
 auth_basic            "Restricted";
 auth_basic_user_file  passwd/weblogs;
}

如果请求的URI是/weblogs/httplogs/www.ttlsa.com-access.log,web服务器将会返回服务器上的/data/weblogs/www.ttlsa.com/weblogs/httplogs/www.ttlsa.com-access.log文件.

即,root会根据完整的URI请求来映射,也就是/path/URI.因此前面的映射为 [path]/weblogs/httplogs/www.ttlsa.com-access.log

alias实例:

location ^~ /binapp/ {  
    limit_conn limit 4;
    limit_rate 200k;
    internal;  
    alias /data/statics/bin/apps/;          # path
}

alias则会把location中的path丢掉,把当前指向匹配到的目录指向指定的目录.

如果一个请求的URI是/binapp/a.ttlsa.com/favicon,web服务器将会返回服务器上 [/data/statics/bin/apps]/a.ttlsa.com/favicon.jgp文件.

注意事项:

  1. 在使用alias时,目录后一定要加 “/“
  2. alias可以指定任何名称
  3. alias在使用正则匹配时,必须要捕捉到匹配的内容并在指定的内容处使用
  4. alias只能位于location中

参考链接