Nginx 安装

Nginx 安装

nginx是Igor Sysoev编写的一个高性能的HTTP和反向代理服务器,另外它也可以作为邮件代理服务器。第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、腾讯等。据Netcraft统计,在2012年8月份,世界上最繁忙的网站中有11.48%使用Nginx作为其服务器或者代理服务器。

基本的HTTP服务器特性

处理静态文件,索引文件以及自动索引;打开文件描述符缓存;

使用缓存加速反向代理;简单负载均衡以及容错;

远程FastCGI,uwsgi,SCGI,和memcached服务的缓存加速支持;简单的负载均衡以及容错;

模块化的架构。过滤器包括gzip压缩、ranges支持、chunked响应、XSLT,SSI以及图像缩放。在SSI 过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可被并行处理;

支持SSL,TLS SNI。

其他的HTTP服务器特性

基于名字和IP的虚拟主机;

Keep-alive和pipelined连接支持;

灵活的配置;

重新加载配置以及在线升级时,不需要中断正在处理的请求;

自定义访问日志格式,带缓存的日志写操作以及快速日志轮转;

3xx-5xx错误代码重定向;

重写(rewrite)模块:使用正则表达式改变URI;

根据客户端地址执行不同的功能;

基于客户端IP地址和HTTP基本认证机制的访问控制;

支持验证HTTP referer;

支持PUT、DELETE、MKCOL、COPY以及MOVE方法;

支持FLV流和MP4流;

速度限制;

来自同一地址的同时连接数或请求数限制;

嵌入Perl语言。

邮件代理服务器特性

 

使用外部HTTP认证服务器重定向用户到IMAP/POP3后端;

使用外部HTTP认证服务器认证用户后重定向连接到内部SMTP后端;

支持的认证方式:

POP3: USER/PASS,APOP, AUTH LOGIN/PLAIN/CRAM-MD5;

IMAP: LOGIN,AUTH LOGIN/PLAIN/CRAM-MD5;

SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;

SSL支持;

STARTTLS和STLS支持。

架构和扩展性

一个主进程和多个工作进程,工作进程以非特权用户运行;

支持的事件机制:kqueue(FreeBSD 4.1+)、epoll(Linux 2.6+)、rt signals(Linux2.2.19+)、/dev/poll(Solaris 7 11/99+)、event ports(Solaris 10)、select以及poll;

众多支持的kqueue特性包括EV_CLEAR、EV_DISABLE(临时禁止事件)、NOTE_LOWAT、EV_EOF,可用数据的数量,错误代码;

支持sendfile(FreeBSD3.1+, Linux 2.2+, Mac OS X 10.5+)、sendfile64(Linux 2.4.21+)和sendfilev(Solaris 8 7/01+);

文件AIO(FreeBSD4.3+, Linux 2.6.22+);

DIRECTIO(FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, Mac OS X);

支持Accept-filters(FreeBSD4.1+, NetBSD 5.0+)和 TCP_DEFER_ACCEPT(Linux 2.4+);

10000个非活跃的HTTPkeep-alive连接仅占用约2.5M内存;

尽可能避免数据拷贝操作。

 

本次安装主要作为文件服务器使用:

一、安装前的准备工作:

检查安装nginx的依赖性,nginx的模块需要第三方库的支持,检查是否安装下列库:zlib、zlib-devel、openssl、openssl-devel、prce、prce-devel

1. GCC编译器-程序代码编译工具

Tarball安装方式必须的工具!

首先检验你的服务器环境是否安装gcc,方法如下:

#gcc

如果出现:gcc: no input files 证明已经安装过gcc编译工具!

如果出现:gcc: command not found 说明还没有安装过gcc编译工具!

Redhat系安装方法:yum install gcc

Debian系(包括ubuntu)安装方法:#apt-getinstall gcc

2.PCRE(Perl Compatible Regular Expressions) 库.

PCRE(Perl Compatible Regular Expressions) 库包括 perl 兼容的正规表达式库.这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的.

编译Nginx时需要用到PCRE,同时Nginx的Rewrite和http模块也要用到PCRE的语法!需要安装pcre包pcre-devel包.pcre包负责提供库的编译版本,pcre-devel包提供编译项目时用到的开发头文件和代码!

Redhat系安装方法:

# yum install pcre pcre-devel 或 #yuminstall pcre*,两个命令效果一样,安装的文件也一样!

Debian系(包括ubuntu)安装方法:

#apt-get install libpcre3 libpcre3-dev

3.zlib库

Zlib 软件包包含zlib 库,很多程序中的压缩或者解压缩函数都会用到这个库。Nginx的不同模块使用gzip压缩时会使用到,需要安装zlib和zlib-devel两个包!

Redhat系安装方法:

# yum install zlib zlib-devel

Debian系(包括ubuntu)安装方法:

# apt-get install zlib1g zlib1g-dev

4.OpenSSL

Nginx提供安全网页服务时候需要使用到!需要安装openssl和openssl-devel两个包!

Redhat系安装方法:

# yum install zlib zlib-devel

Debian系(包括ubuntu)安装方法:

# apt-get install openssl openssl-dev

 

二、nginx安装

# wgethttp://sysoev.ru/nginx/nginx-0.8.13.tar.gz

# tar zxvf nginx-0.8.13.tar.gz

# cd nginx-0.8.13

# ./configure

 

# make

# make install

 

三、nginx的配置

1.设置代理参数

 nginx安装成功后的安装目录为/usr/local/nginx,在conf文件夹中新建proxy.conf,用于配置一些代理参数,内容如下

#!nginx (-)

# proxy.conf

proxy_redirect          off;

proxy_set_header        Host $host;

proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip

#proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; #获取代理者的真实ip

#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;

 

2.修改配置文件

编辑安装目录下conf文件夹中的nginx.conf,输入如下内容

#运行nginx所在的用户名和用户组

#user www www;

 

#启动进程数

worker_processes 8;

#全局错误日志及PID文件

error_log /usr/local/nginx/logs/nginx_error.log crit;

 

pid       /usr/local/nginx/nginx.pid;

#Specifies the value for maximum filedescriptors that can be opened by this process.

worker_rlimit_nofile 65535;

#工作模式及连接数上限

events

{

  useepoll;

 worker_connections 65535;

}

#设定http服务器,利用它的反向代理功能提供负载均衡支持

http

{

  #设定mime类型

 include       mime.types;

 default_type application/octet-stream;

 include /usr/local/nginx/conf/proxy.conf;

 #charset  gb2312;

  #设定请求缓冲   

 server_names_hash_bucket_size 128;

 client_header_buffer_size 32k;

 large_client_header_buffers 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/plainapplication/x-javascript text/css application/xml;

# gzip_vary on;

 

 #limit_zone  crawler  $binary_remote_addr  10m;

 ###禁止通过ip访问站点

 server{

       server_name _;

       return 404;

       }

 server

  {

   listen       80;

   server_name  localhost;

   index index.html index.htm index.jsp;#设定访问的默认首页地址

   root  /home/www/web/ROOT;#设定网站的资源存放路径

    #limit_conn  crawler  20;   

   location ~ .*.jsp$ #所有jsp的页面均交由tomcat处理

    {

     index index.jsp;

     proxy_pass http://localhost:8080;#转向tomcat处理

     }

   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ #设定访问静态文件直接读取不经过tomcat

    {

     expires      30d;

    }

   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 /usr/local/nginx/logs/localhost.log access;#设定访问日志的存放路径

 

     }  

}

 

 

四、nginx配置检测

 

修改/usr/local/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:

1.#/usr/local/nginx/sbin/nginx -t

如果屏幕显示以下两行信息,说明配置文件正确:

1. the configuration file/usr/local/nginx/conf/nginx.conf syntax is ok

2. the configuration file/usr/local/nginx/conf/nginx.conf was tested successfully

如果提示unknown host,则可在服务器上执行:ping www.baidu.com如果也是同样提示unknown host则有两种可能:

    a、服务器没有设置DNS服务器地址,查看/etc/resolv.conf下是否设置,若无则加上

    b、防火墙拦截

 

2.启动nginx的命令

#/usr/local/nginx/sbin/nginx

这时,输入以下命令查看Nginx主进程号:

ps -ef | grep "nginx: masterprocess" | grep -v "grep" | awk -F ' ' '{print $2}'

 

3.nginx的命令

#/usr/local/nginx/sbin/nginx -s stop

 

4在不停止Nginx服务的情况下平滑变更Nginx配置

 

a、修改/usr/local/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:

#/usr/local/nginx/sbin/nginx -t

如果屏幕显示以下两行信息,说明配置文件正确:

the configuration file/usr/local/nginx/conf/nginx.conf syntax is ok

the configuration file/usr/local/nginx/conf/nginx.conf was tested successfully

b、这时,输入以下命令查看Nginx主进程号:

 

#ps -ef | grep "nginx: masterprocess" | grep -v "grep" | awk -F ' ' '{print $2}'

屏幕显示的即为Nginx主进程号,例如:

  6302

这时,执行以下命令即可使修改过的Nginx配置文件生效:

 

#kill -HUP 6302

或者无需这么麻烦,找到Nginx的Pid文件:

 

#kill -HUP `cat/usr/local/nginx/nginx.pid` 

nginx启动好后启动tomcat,此时输入http://主机ip地址即可看到“Myweb!”


想要更加深入的了解nginx的话可以去http://tengine.taobao.org/book/index.html 学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值