Nginx是一个高性能的web和反向代理服务器,它具有很多优越的特性:

  • 作为web服务器,使用资源少,并发高
  • 做负载均衡服务器
  • 作为偶见代理服务器,
  • 安装简单,配置文件简洁

    Nginx的安装

  • 编译环境需要gcc,g++开发库之类,需要提前安装
  • Ubuntu平台编译环境命令
    1
    2
    apt-get install build-essential
    apt-get install libtool

centos:
安装make
yum -y install gcc automake autoconf libtool make
安装g++
yum install gcc gcc-c++

1.选定源码目录

cd /usr/local/src

2.安装PCRE库
1
2
3
4
5
6
7
cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
tar -zxvf pcre-8.37.tar.gz
cd prce-8.37
./configure
make
make install
3.安装lib库
1
2
3
4
5
6
7
cd /usr/local/src
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install
4.安装ssl

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz
tar -zxvf openssl-1.0.1t.tar.gz

5.安装Nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd /usr/local/src
wget http://nginx.org/download/nginx-1.4.2.tar.gz
tar -zxvf nginx-1.4.2.tar.gz
cd nginx-1.4.2

./configure --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/opt/app/openet/oetal1/chenhe/pcre-8.37 \
--with-zlib=/opt/app/openet/oetal1/chenhe/zlib-1.2.8 \
--with-openssl=/opt/app/openet/oetal1/chenhe/openssl-1.0.1t

make
make install
6.启动

netstat -ano|grep 80 – 查询端口是否被占用
sudo /usr/local/nginx/nginx
浏览器访问:http://ip

7.常用命令
  • 启动:sudo /usr/local/nginx/nginx
  • 从容停止(等请求结束后关闭服务)
    ps -ef|grep nginx
    kill -QUIT nginx主进程号
  • 快速停止
    kill -TERM nginx主进程号
  • 强制停止
    kill -9 nginx主进程号
    或者:
    kill -QUIT cat /usr/local/nginx/nginx.pid

Nginx配置

  • 创建Nginx运行使用的用户www

    1
    2
    /usr/sbin/groupadd wwww
    /usr/sbin/useradd -g www www
  • 配置nginx.conf

    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
    cat /usr/local/webserver/nginx/conf/nginx.conf

    user www www;
    worker_process 2; # 设置值与CPU核心数一致
    error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; # 日志位置和日志级别
    pid /usr/local/webserver/nginx/nginx.pid;
    worker_rlimit_nofile 65535;
    events
    {
    use epoll;
    worker_connections 65535;
    }
    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';
    # charset gb2312;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffer 4 32k;
    client_max_body_size 8m;

    sendfile on;
    tcp_nopush on;
    keepalive_timeout 60;
    tcp_nodelay on;
    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;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    #limit_zone crawler $binary_remote_addr 10m;

    # server虚拟主机的配置
    server
    {
    listen 80;
    server_name localhost;
    index index.html index.html index.php;
    root /usr/webserver/nginx/html; # 站点目录
    location ~.*\.(php|php5)?$
    {
    #fastcgi_pass unix:/tmp/php-cgi.sock;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
    {
    expires 30d;
    # access_log off;
    }
    location ~ .*\.(js|css)?$
    {
    expires 15d;
    # access_log off;
    }
    access_log off;

    }
    }
  • 检查nginx.conf的正确性:
    /usr/local/webserver/nginx/sbin/nginx -t

  • 其他常用命令
    1
    2
    3
    4
    5
    6
    # 重新载入配置文件
    /usr/local/webserver/nginx/sbin/nginx -s reload
    # 重启Nginx
    /usr/local/webserver/nginx/sbin/nginx -s reopen
    # 停止Nginx
    /usr/local/webserver/nginx/sbin/nginx -s stop