码迷,mamicode.com
首页 > 其他好文 > 详细

nginx的简介和基本配置

时间:2014-07-19 02:38:45      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:nginx 反向代理 负载均衡 基本配置

1 简介

       Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪网易、 腾讯等。

2优点

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

       在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。

    作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
     Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。

3安装(源码包)

  a低版本

yum  -y  groupinstall  "开发工具"     "开发库"

rpm -q  make  gcc  gcc-c++

netstat  -utunalp | grep :80   确保80端口没有被占用

useradd  -M  -s  /sbin/no   www                默认使用www用户

yum -y install  pcre-devel

nginx  地址重写    修改客户端访问自己的url路径 

Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。


tar -zxvf nginx-0.8.55.tar.gz

./configure  --help

./configure  --prefix=/usr/local/nginx   --user=www                  制定安装目录和用户,

--group=www   --with-http_stub_status_module                      工作组和功能

--with-http_ssl_module 

make  

make   install

在 /usr/local/nginx/ 下     

conf/nginx.conf                                                                                //主配置文件

html                                                                                                   //网页目录

logs                                                                                                   //日志文件

sbin/nginx                                                                                         //启动脚本


启动服务   /usr/local/nginx/sbin/nginx

停止服务   /usr/local/nginx/sbin/nginx  -s  stop

nginx 启动脚本常用选项

-h     查看帮助信息

-v 查看nginx版本

-V 查看编译参数   ./configure

-t    nginx.conf 测试默认配置文件

-c   安装目录/conf/nginx-2.conf     指定配置文件

-s  stop      停止nginx服务


格式  :   pkill/kill     -信号     进程名/pid号

例子 :  pkill      -int     nginx

信号

TERM, INT   快速关闭 

QUIT 从容关闭,关闭主进程顺便关闭工作子进程

HUP         重载配置用新的配置开始新的工作进程从容关闭旧的工作进程 

USR1 重新打开日志文件 

USR2 平滑升级可执行程序

WINCH 从容关闭工作进程,不会立即关闭子进程

pkill -USR1  nginx

kill  -INT  `cat /usr/local/nginx/log/nginx.pid`


b平滑升级nginx (在不停止服务,升级软件版本,版本不宜跨度太大)

tar -zxvf nginx-1.0.5.tar.gz

cd nginx-1.0.5

./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module

make

mv  /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginxold

mv nginx-1.0.5/objs/nginx  /usr/local/nginx/sbin/

cd nginx-1.0.5

make  upgrade

/usr/local/nginx/sbin/nginx  -v                                                       查看版本


4基本配置

#运行用户

user www-data;    

#启动进程,通常设置成和cpu的数量相等

worker_processes  1;

#全局错误日志及PID文件

error_log  /var/log/nginx/error.log;

pid        /var/run/nginx.pid;

#工作模式及连接数上限

events {

    use   epoll;             #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能

    worker_connections  1024;#单个后台worker process进程的最大并发链接数

    # multi_accept on; 

}

bubuko.com,布布扣

a  基于域名的虚拟主机(通过主机名区分客户端的访问)

http {

   server  {

   listen  80;

   server_name   www.zwl.com;

   location  /  {

            root  /www;

            index index.html;

    }

 }

 server {

    listen  80;

    server_name  bbs.zwl.com;

    location  /  {

            root  /bbs;

            index index.html;

    }

 }

}


b基于端口的虚拟主机(通过端口区分客户端的访问)

http://www.zwl.com:80     www

http://www.zwl.com:8000     bbs

http://www.zwl.com:8090     web

http  {

   server  {

      listen  80;

     server_name   www.zwl.com;

     location  /  {

            root  /www;

            index index.html;

     }

   }

    server {

      listen  8000;

     server_name  www.zwl.com;

      location  /  {

            root  /bbs;

            index index.html;

       }

  }

   server {

      listen  8090;

     server_name www.zwl.com;

      location  /  {

            root  /web;

            index index.html;

       }

  }

}

c基于ip的虚拟主机(通过ip区分客户端的访问

*  ip 地址要有对应的物理接口

http://192.168.10.254     www

http://192.168.10.200     bbs

ifconfig eth0  192.168.10.254

ifconfig eth0:0  192.168.10.200

http  {

   server  {

      listen  192.168.10.254:80;

     #server_name   www.zwl.com;

     location  /  {

            root  /www;

            index index.html;

     }

   }

    server {

      listen  192.168.10.200:80;

    #server_name  bbs.zwl.com;

      location  /  {

            root  /bbs;

            index index.html;

       }

  }

}


d反向代理也可作web的负载均衡

       反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

       通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务


bubuko.com,布布扣bubuko.com,布布扣验证:客户端访问

bubuko.com,布布扣

bubuko.com,布布扣

        看见了吧,同样的域名可以访问不同的页面,nginx他把两台web服务器分别来使用,1:1的

        nginx 的 upstream默认是以轮询的方式实现负载均衡,这种方式中,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

另外一种方式是ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 


5、用户访问控制

只允许从ip地址是192.168.10.200客户端访问 网站192.168.10.254服务器的8000端口


server   {

  listen  8000;

  server_name   www.zwl.com;

  location  /  {

     root   /bbs;

     index  index.html;

     allow 192.168.10.200;

     deny all;

     #deny   192.168.10.0/24 ;

     #allow  all;

  }

}


6、用户认证   (用户访问网站页面时要输入正确的用户名和密码才可以访问)

访问用户名wangfang     791001


server   {

  listen  8000;

  server_name   www.zwl.com;

  location  /  {

     root   /bbs;

     index  index.html;

     allow 192.168.10.200;

     deny all;

     #deny   192.168.10.0/24 ;

     #allow  all;

     auth_basic  "input username and password";

     auth_basic_user_file    /usr/local/nginx/conf/authuser.txt;

  }

}

7防盗链

盗 链:   其他的网站盗连你的网站资源 给自己盈利。

location  ~*   \.(gif|jpg|png|swf|flv)$ {

          valid_referers  none  blocked  www.zwl.com  .zwl.com;


         if ($invalid_referer) {

              rewrite   ^/        http://192.168.10.254/error.html;

            #return   404;

         }

      } 

这就是防止其他网站访问图片的例子,只有在本机和本域才能访问的









本文出自 “一起去奋斗” 博客,请务必保留此出处http://zwltc.blog.51cto.com/6019176/1440069

nginx的简介和基本配置

标签:nginx 反向代理 负载均衡 基本配置

原文地址:http://zwltc.blog.51cto.com/6019176/1440069

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!