Nginx是一个高性能的http和反向代理服务器,同时也是一个imap/pop3/smtp代理服务器。十分轻量级的http服务。

常用的web服务器

    UNIX和LINUX平台下

    Apache  nginx    lighttpd  Tomcat(JAVA语言编写的)  IBMwebsphere

    Windows平台下

    Intenet   information  server  (IIS)

部署nginx服务器

一、 nginx 安装与配置

    源码包包安装 所以必须安装开发库软件包组合开发工具软件包组。

[root@localhost ~]# yum groupinstall "开发工具" " 开发库" -y

    需要从网上下载软件包。RPM  源码包。

    Nginx可以在服务运行的时候升级。平滑升级。

[root@localhost ~]# useradd -M -s /sbin/nologin nginx[root@localhost ~]# tail -1 /etc/passwd[root@localhost nginx-package]# tar zxvf nginx-0.8.55.tar.gz[root@localhost nginx-0.8.55]# ./configure --help[root@localhost ~]# rpm -qa | grep ssl[root@localhost nginx-0.8.55]# ./configure 指定安装路径--prefix=/usr/local/nginx 指定用户--user=nginx 指定组--group=nginx 支持状态查看--with-http_stub_status_module 支持https--with-http_ssl_module

Nginx  rewrite   地址重写  支持修改用户访问的目标地址

用perl+正则表达式的方式匹配目标地址

[root@localhost ~]# yum install pcre-devel –y[root@localhost ~]# rpm -qa | grep -i PCREpcre-devel-6.6-6.el5_6.1pcre-6.6-6.el5_6.1pcre-6.6-6.el5_6.1pcre-devel-6.6-6.el5_6.1[root@localhost nginx-0.8.55]# make[root@localhost nginx-0.8.55]#make install[root@localhost nginx]# lsConf  存放配置文件  主配置文件nginx.confhtml  网页目录logs  日志文件sbin  可执行命令   启动脚本

启动nginx服务  默认监听80端口,要把其他网站服务停掉

[root@localhost conf]# netstat -antup | grep :80tcp        0      0 :::80                       :::*                        LISTEN      4087/httpd   [root@localhost conf]# /etc/init.d/httpd stop[root@localhost sbin]# ./nginx –h-?,-h  : this help    查看帮助信息-v    : show version and exit    查看版本号-V   : show version and configure options then exit 查看编译的配置信息-t    : test configuration and exit  测试配置文件nginx.conf有无错误-q   : suppress non-error messages during configuration testing-s signal : send signal to a master process: stop, quit, reopen, reload-p prefix     : set prefix path (default: /usr/local/nginx/)-c  filename  : set configuration file (default: conf/nginx.conf)使用指定的配置文件-g directives : set global directives out of configuration file[root@localhost sbin]# ./nginx[root@localhost sbin]# netstat -antup | grep :80tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      13312/nginx   [root@localhost sbin]# ps aux | grep nginx传输协议TCP,端口号80,所有者nginx[root@localhost sbin]# elinks --dump http://localhostWelcome to nginx!

停止nginx服务

没有提供停止服务的脚本,如果要停止服务杀进程。

Pkill  -信号  进程名Kill  -信号   pid号

信号:

TREM或INT    快速关闭

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

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

USR1  重新打开日志文件

USR2  平滑升级可执行程序

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

[root@localhost sbin]# pkill -HUP nginx平滑升级nginx软件[root@localhost nginx-1.0.5]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module[root@localhost sbin]# mv nginx nginx-old[root@localhost objs]# mv nginx /usr/local/nginx/sbin/nginx[root@localhost nginx-1.0.5]# make upgrade 平滑升级/usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successfulkill -USR2 `cat /usr/local/nginx/logs/nginx.pid`sleep 1test -f /usr/local/nginx/logs/nginx.pid.oldbinkill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

二、 nginx虚拟主机

基于IP地址虚拟主机(通过IP地址区分用户访问)

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

基于域名虚拟主机(通过主机名区分用户访问)

Vim  安装目录/conf/nginx.confhttp {server{location/{}}Server{}}[root@localhost conf]# grep -vE "^$|#" nginx.confworker_processes  1;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;    server {        listen       80;        server_name  localhost;           location / {            root   html;   网页根目录            index  index.html index.htm;    首页文件名        }        error_page   500 502 503 504  /50x.html;  错误显示页面        location = /50x.html {            root   html;        }    }}[root@localhost conf]# grep -vE "^$|#" nginx.conf > nginx-1.conf[root@localhost conf]# vim nginx-1.conf[root@localhost nginx]# pkill -9 nginx[root@localhost nginx]# sbin/nginx -c conf/nginx-1.conf [root@localhost nginx]# netstat -antup | grep :80

基于端口的虚拟主机

[root@localhost ~]# mkdir /web8000[root@localhost ~]# mkdir /web8090[root@localhost ~]# echo web8000 > /web8000/index.html[root@localhost ~]# echo web8090 > /web8090/index.html[root@localhost nginx]# vim conf/nginx1.confserver {        listen  8000;        location / {                root /web8000;                index index.html;        }                }    server {        listen  8090;        location / {                root /web8090;                index index.html;        }                }[root@localhost nginx]# sbin/nginx -c conf/nginx1.conf[root@localhost ~]# elinks --dump http://localhost:8000   web8000[root@localhost ~]# elinks --dump http://localhost:8090   web8090

基于IP地址的虚拟主机(通过IP地址区分用户访问)

生产环境中,要有对应IP地址的物理网卡。

[root@localhost ~]# ifconfig eth0:0 192.168.1.100[root@localhost ~]# ifconfig eth0:1 192.168.1.200[root@localhost ~]# echo web100 > /web8000/index.html[root@localhost ~]# echo web200 > /web8090/index.html[root@localhost nginx]# vim conf/nginx1.confserver {        listen  192.168.1.100:80;        location / {                root /web8000;                index index.html;        }                }    server {        listen  192.168.1.200:80;        location / {                root /web8090;                index index.html;        }                }[root@localhost nginx]# pkill -9 nginx[root@localhost nginx]# netstat -antup | grep nginxtcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      17323/nginx    [root@localhost ~]# elinks --dump http://192.168.1.100   web100[root@localhost ~]# elinks --dump http://192.168.1.200   web200

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

[root@localhost nginx]# vim conf/nginx1.confserver {        listen  80;        server_name www.example.com        location / {                root /web8000;                index index.html;        }                }    server {        listen  80;        server_name bbs.example.com        location / {                root /web8090;                index index.html;        }                }[root@localhost ~]# elinks --dump http://bbs.example.com   web200[root@localhost ~]# elinks --dump http://www.example.com   web100[root@localhost nginx]# pkill -9 nginx[root@localhost nginx]# sbin/nginx -c conf/nginx1.conf

用户访问控制

//只允许192.168.1.1的访问(小范围的写在上面)

Location /{Allow192.168.1.1Allow192.168.1.0/24Denyall}

拒绝访问(小范围的写在上面)

Location /{deny192.168.1.1deny192.168.1.0/24allowall}

用户认证(用户在访问页面的时候呀输入正确的用户名密码才能访问)

Location / {Auth_basic“auth-domain”;Auth_basic_user_file/usr/local/nginx/conf/authuser.txt}

生成用户名密码

[root@www ~]# htpasswd -c /usr/local/nginx/conf/authuser.txt admin

    -c  Create a new file.  指定用户名密码存放的文件

Nginx反向代理(应用层的负载均衡集群)

[root@www nginx]# vim conf/nginx.confhttp {    upstream ly {        server 192.168.1.254:80;        server 192.168.1.2:80;}server {location / {            proxy_pass http://ly;}}}

Nginx的反向代理优点:

可以自动的对后端的网站服务器进行健康检查。若后端某一台服务器不能提供网站服务时,不会将请求发给这台服务器。

分发时候使用的算法:使用最多为轮询和权重值。

轮询算法:(默认,权重值时1)

将请求平均的分发给服务器组服务器。

Weight  指定轮询几率。权重和访问比率成正比。通常用于后端服务器性能不同的情况,默认值为1.

upstream ly {        server 192.168.1.254:80 weight=3;        server 192.168.1.2:80 weight=2;}

Ip_hash每个请求按访问ip的hash结果分配。这样可以让每个访客固定访问一个后端服务器。可以解决session的问题。

upstream ly {  ip_hash;        server 192.168.1.254:80;        server 192.168.1.2:80;}

Fair 按后端服务器的响应时间来分配请求响应时间短的优先分配。

不是默认支持。

upstream ly {  fair;        server 192.168.1.254:80;        server 192.168.1.2:80;}

服务器主机状态类型

Down  表示当前server暂时不参与负载。

Backup: 当其他所有的非backup机器down或者忙的时候,请求会发给backup机器。这台机器压力最轻。

Max_fails: 允许请求失败的次数。默认为1.当超过此次数时,返回proxy_next_upstream模块定义的错误。

Fail_timeout:max_fails次失败后,暂停提供服务的时间。

Nginx的优点。地址重写。防盗链。Nginx做反向代理时能否缓存访问用户的请求。