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 PCRE pcre-devel-6.6-6.el5_6.1 pcre-6.6-6.el5_6.1 pcre-6.6-6.el5_6.1 pcre-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]# ls Conf 存放配置文件 主配置文件nginx.conf html 网页目录 logs 日志文件 sbin 可执行命令 启动脚本
启动nginx服务 默认监听80端口,要把其他网站服务停掉
[root@localhost conf]# netstat -antup | grep :80 tcp 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 :80 tcp 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://localhost Welcome 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 -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` sleep 1 test -f /usr/local/nginx/logs/nginx.pid.oldbin kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
二、 nginx虚拟主机
基于IP地址虚拟主机(通过IP地址区分用户访问)
基于端口虚拟主机(通过端口区分用户访问)
基于域名虚拟主机(通过主机名区分用户访问)
Vim 安装目录/conf/nginx.conf http { server{ location/{ } } Server{ } } [root@localhost conf]# grep -vE "^$|#" nginx.conf worker_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.conf server { 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.conf server { 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 nginx tcp 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.conf server { 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.1 Allow192.168.1.0/24 Denyall }
拒绝访问(小范围的写在上面)
Location /{ deny192.168.1.1 deny192.168.1.0/24 allowall }
用户认证(用户在访问页面的时候呀输入正确的用户名密码才能访问)
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.conf http { 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做反向代理时能否缓存访问用户的请求。