什么是Nginx
是一个高性能的反向代理服务器
正向代理代理的是客户端
反向代理代理的是服务端
Apache、Tomcat、Nginx
静态web服务器
jsp/servlet服务器 tomcat
安装Nginx
1. 下载tar包 (地址:http://nginx.org/en/download.html)
安装make:
yum -y install gcc automake autoconf libtool make
安装g++:
yum install gcc gcc-c++
遇到yum在使用,ps -ef |grep yum,查出线程id ,kill -9 id 删除,如果删除不了,就用rm -f /var/run/yum.pid 删除,还不行,重启虚拟机
2. tar -zxvf nginx.tar.gz 解压 cd 进入目录
3. ./configure [--prefix] ./configure --prefix=/root/ngnix
4. make && make install
启动和停止
1. sbin/nginx
2. ./nginx -s stop
3. ./nginx -s reload
启动后,访问虚拟机ip地址,出现
Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to nginx.org. Commercial support is available at nginx.com. Thank you for using nginx.
若出现 forbidden 403,则在配置中加入当前用户root,重新启动nginx即可。(若安装到root目录下,其他用户(nginx,www)----->访问路径就不可以在/root下)
nginx.conf
Main
event
http
虚拟主机配置
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } }
基于ip的虚拟主机
不演示
基于端口号的虚拟主机
在nginx.conf中添加如下配置,后重新加载配置
server { listen 8080; server_name localhost; location / { root html; index index.html; } }
访问http://192.168.20.130:8080
Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to nginx.org. Commercial support is available at nginx.com. Thank you for using nginx.
基于域名的虚拟主机
www.guapaoedu.com / ask.gupaoedu.com / git.gupaoedu.com / bbs.gupaoedu.com
vi conf/nginx.conf,在html文件夹下添加 bbs.html 、ask.html,reload配置
在本地C:\Windows\System32\drivers\etc 的host文件下绕过解析,添加对应ip映射
server { listen 80; server_name www.gupaoedu.com; location / { root html; index index.html; } } server { listen 80; server_name bbs.gupaoedu.com; location / { root html; index bbs.html; } } server { listen 80; server_name ask.gupaoedu.com; location / { root html; index ask.html; } }
进行访问,如果无法访问
1.cmd打开命令窗口, ipconfig /flushdns 刷新dns解析缓存
2.注意 输入ask.gupaoedu.com 的游览器前缀时https 还是http,必须是http才行
http://bbs.gupaoedu.com/ 页面显示bbs.html的内容
location
配置语法
location [= | ~* | ^~ ] /uri/ {...}
配置规则
location = /uri 精准匹配
location ^~ /uri 前缀匹配
location ~ /uri
location / 通用匹配
规则的优先级
1 location = / 2 location = /index 3 location ^~ /article/ 4 location ^~ /article/files/ 5 location ~ \.(gif|png|js|css)$ 6 location / http://192.168.11.154/ ->1 http://192.168.11.154/index ->2 http://192.168.11.154/article/files/1.txt ->4 找最长的路径匹配(路径有重复会报错) http://192.168.11.154/mic.png ->5
1. 精准匹配是优先级最高
2. 普通匹配(最长的匹配)
3. 正则匹配
实际使用建议
location =/ { } location / { } location ~* \.(gif|....)${ }
Nginx模块
反向代理、email、nginx core。。。
模块分类
1. 核心模块 ngx_http_core_module
2. 标准模块 http模块
3. 第三方模块
ngx_http_core_module
server{ listen port server_name root ... }
location 实现uri到文件系统路径的映射
2. error_page
ngx_http_access_module
实现基于ip的访问控制功能 1、allow address | CIDR | unix: | all; 2、deny address | CIDR | unix: | all; 自上而下检查,一旦匹配,将生效,条件严格的置前
如何添加第三方模块
1. 原来所安装的配置,你必在重新安装新模块的时候,加上
2. 不能直接make install
configure --prefix=/data/program/nginx
安装方法
./configure --prefix=/安装目录 --add-module = /第三方模块的目录 ./configure --prefix=/root/nginx --with-http_stub_status_module --with-http_random_index_module
make cp objs/nginx $nginx_home/sbin/nginx
需要先关闭nginx,输入y确认复制
然后看能否正常启动nginx
http_stub_status_module
在nginx.conf中添加
location /status { stub_status; }
访问:http://192.168.20.130/status
Active connections: 2 server accepts handled requests 3 3 9 Reading: 0 Writing: 1 Waiting: 1
Active connections:当前状态,活动状态的连接数
accepts:统计总值,已经接受的客户端请求的总数
handled:统计总值,已经处理完成的客户端请求的总数
requests:统计总值,客户端发来的总的请求数
Reading:当前状态,正在读取客户端请求报文首部的连接的连接数
Writing:当前状态,正在向客户端发送响应报文过程中的连接数
Waiting:当前状态,正在等待客户端发出请求的空闲连接数
http_random_index_module
www.gupaoedu.com
随机显示主页
一般情况下,一个站点默认首页都是定义好的index.html、index.shtml等等,如果想站点下有很多页面想随机展示给
用户浏览,那得程序上实现,很麻烦,使用nginx的random index即可简单实现这个功能,凡是以/结尾的请求,都
会随机展示当前目录下的文件作为首页
\1. 添加random_index on 配置,默认是关闭的
location / { root html; random_index on; index index.html index.htm; }
\2. 在html目录下创建多个html页面