nginx 安装及配置

来源:互联网 发布:临朐一中知乎 编辑:程序博客网 时间:2024/04/25 17:11

Nginx 简介

    Nginx("enginex")是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,已经在该站点运行超过两年半了。Igor将源代码以类BSD许可证的形式发布。

  1. 目前官方 Nginx 并不支持 Windows,您只能在包括 Linux、UNIX、BSD 系统下安装和使用;
  2. Nginx 本身只是一个 HTTP 和反向代理服务器。本身并不支持现在流行的JSP、ASP、PHP、PERL等动态页面,它无法像 Apache 一样通过安装各种模块来支持不同的页面脚本,例如PHP、CGI 等。但它可以通过反向代理将请求发送到后端的服务器(Tomcat、Apache、IIS等)来完成动态页面的请求处理。
  3. Nginx 支持简单的负载均衡和容错;
  4. 支持作为基本 HTTP 服务器的功能,例如日志、压缩、Byte ranges、Chunkedresponses、SSL、虚拟主机等等,应有尽有。

安装

一、依赖的程序

1. gzip module requires zlib library

2. rewrite module requires pcre library

3. ssl support requires openssl library


二、在 Linux 下安装 Nginx,为了确保能在 Nginx 中使用正则表达式进行更灵活的配置,安装之前需要确定系统是否安装 PCRE

       ./configure

       make

       make install

安装完成之后 安装 nginx

      ./configure--with-http_stub_status_module –prefix=/usr/local/nginx

      make

      make install

更多的安装配置

  ./configure --prefix=/usr/local/nginx

  --with-openssl=/usr/include (启用ssl)

  --with-pcre=/usr/include/pcre/ (启用正规表达式)

  --with-http_stub_status_module (安装可以查看nginx状态的程序)

  --with-http_memcached_module (启用memcache缓存)

  --with-http_rewrite_module (启用支持url重写)


启动及重启

启动:./nginx &

重启:kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

测试配置文件:nginx -t

如果通过http://localhost 能够访问的话,表示已经安装成功


配置

一、 /usr/local/nginx 目录下有四个子目录分别是:conf、html、logs、sbin 。

其中 Nginx的配置文件存放于 conf/nginx.conf,Nginx 只有一个程序文件位于 sbin 目录下的 nginx 文件。


二、打开nginx.conf配置文件 修改后内容如下: http://wiki.codemongers.com/NginxFullExample


-------------------------------------------------------------------------------------------------------------------------------------------------------

# 运行用户

user nobody nobody;


#启动进程数

worker_processes 5;


#全局错误日志及PID文件

error_log  logs/error.log notice;

pid             logs/nginx.pid;


#工作模式及连接数上限
events {
  #工作模式有:select(标准模式),poll(标准模式),kqueue(高效模式,适用FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 and MacOS X),
  #epoll(高效模式,本例用的。适用Linux 2.6+,SuSE 8.2,),/dev/poll(高效模式,适用Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+)
  use epoll;
  worker_connections      1024;
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
  #设定mime类型
  include      conf/mime.types;
  default_type  application/octet-stream;

  #设定日志格式
  log_format main        '$remote_addr - $remote_user [$time_local] '
                         '"$request" $status $bytes_sent '
                         '"$http_referer" "$http_user_agent" '
                         '"$gzip_ratio"';

  log_format download    '$remote_addr - $remote_user [$time_local] '
                         '"$request" $status $bytes_sent '
                         '"$http_referer" "$http_user_agent" '
                         '"$http_range" "$sent_http_content_range"';


  #设定请求缓冲
  client_header_buffer_size    10k;
  large_client_header_buffers  44k;
 
  #开启gzip模块,要求安装gzip 在运行./config时要指定
  gzip on;
  gzip_min_length  1100;
  gzip_buffers    48k;
  gzip_types      text/plain;
  output_buffers  132k;
  postpone_output  1460;  

  #设定访问日志
  access_log  logs/access.log  main;
  client_header_timeout  3m;
  client_body_timeout    3m;
  send_timeout          3m;
  sendfile                on;
  tcp_nopush              on;
  tcp_nodelay            on;
  keepalive_timeout  65;

  #设定负载均衡的服务器列表
  upstream backserver {
    #weigth参数表示权值,权值越高被分配到的几率越大
    #本例是指在同一台服务器,多台服务器改变ip即可

    server 127.0.0.1:8081 weight=5;
    server 127.0.0.1:8082;
    server 127.0.0.1:8083;
  }

  #设定虚拟主机,默认为监听80端口,改成其他端口会出现问题
  server {
    listen         80;
    server_name    test.com www.test.com;
    charset utf8;

    #设定本虚拟主机的访问日志
    access_log  logs/test.com.log  main;

    #如果访问 /images/*, /js/*, /css/* 资源,则直接取本地文件,不用转发。但如果文件较多效果不是太好。
    location ~ ^/(images|js|css)/  {
        root    /usr/local/testweb;
        expires 30m;
    }

    #对 "/" 启用负载均衡
    location / {
       proxy_pass      http://backserver;
       proxy_redirect          off;
       proxy_set_header        Host $host;
       proxy_set_header        X-Real-IP $remote_addr;
       proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
       client_max_body_size    10m;
       client_body_buffer_size 128k;
       proxy_connect_timeout  90;
       proxy_send_timeout      90;
       proxy_read_timeout      90;
       proxy_buffer_size      4k;
       proxy_buffers          4 32k;
       proxy_busy_buffers_size 64k;
       proxy_temp_file_write_size 64k;
    }

    #设定查看Nginx状态的地址,在运行./config 要指定,默认是不安装的。
    location /NginxStatus {
       stub_status            on;
       access_log              on;
       auth_basic              "NginxStatus";
       
       #是否要通过用户名和密码访问,测试时可以不加上。conf/htpasswd 文件的内容用 apache 提供的 htpasswd 工具来产生即可       
       #auth_basic_user_file  conf/htpasswd;
    }
}





原创粉丝点击