分布式专题-高性能的Web容器之Nginx01-Nginx的初步认识及配置
目录导航
前言
Nginx中文文档
从这篇开始,我们讲Nginx,分为三小节:
- 1
- 2
- 3
互联网领域,作为新人学习一个开源框架或是组件,一般先了解官方文档,虽然英文,但是实为第一手资料,包括我在内的其他非专业开发人员写的都是自己的理解,所以会造成知识的二次传递,为什么BAT注重面试考察原理与实战解决问题的能力?更多的看中的是知识的深度与广度。所以,不是我今天在这里写出三篇关于Nginx的使用与原理,你就可以理解了(大佬略过)~
千里之行,始于足下。我想表达的是,看懂未必等于实际操作也可以,行动起来,用代码改变世界,你我一起创造未来!
什么是Nginx
是一个高性能的反向代理服务器
-
正向代理代理的是客户端
-
反向代理代理的是服务端
Apache、Tomcat、Nginx
静态web服务器
jsp/servlet服务器 tomcat
安装Nginx
1.下载tar包
2.tar -zxvf nginx.tar.gz
3…/configure [–prefix]
设置Nginx安装路径,如果没有指定,默认为/usr/local/nginx
执行后:
4.make && make install
执行后:
如果安装期间有问题,可以参考:nginx安装配置Linux版本
启动和停止
- {path}/sbin/nginx
如果在configure的时候没有指定安装路径,则会默认安装到/usr/local/nginx目录。类似于在windows上安装一个软件,默认安装到C盘类似的效果。
不论哪种安装方式,直接进入安装目录的/sbin/nginx ,启动即可
也可以指定配置文件
最终去浏览器,访问默认的地址:localhost
2. ./nginx -s stop
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的虚拟主机
基于端口号的虚拟主机
server {
listen 8080;
server_name localhost;
location / {
root html;
index index.html;
}
}
基于域名的虚拟主机
server {
listen 80;
server_name www.xxx.com;
location / {
root html;
index index.html;
}
}
server {
listen 80;
server_name bbs.xxx.com;
location / {
root html;
index bbs.html;
}
}
server {
listen 80;
server_name ask.xxx.com;
location / {
root html;
index ask.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/
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
-
精准匹配是优先级最高
-
普通匹配(最长的匹配)
-
正则匹配
实际使用建议
location =/ {
}
location / {
}
location ~* \.(gif|....)${
}
Nginx模块
反向代理、email、nginx core等
模块分类
-
核心模块 ngx_http_core_module
-
标准模块 http模块
-
第三方模块
**
ngx_http_core_module**
server{
listen port
server_name
root ...
}
location 实现uri到文件系统路径的映射
ngx_http_access_module
实现基于ip的访问控制功能
1、allow address | CIDR | unix: | all;
2、deny address | CIDR | unix: | all;
自上而下检查,一旦匹配,将生效,条件严格的置前
如何添加第三方模块
1 .原来所安装的配置,你必在重新安装新模块的时候,加上
- 不能直接make install
configure --prefix=/data/program/nginx
**
安装方法**
./configure --prefix=/安装目录 --add-module = /第三方模块的目录
./configure --prefix=/data/program/nginx --with-http_stub_status_module --with-http_random_index_module
cp objs/nginx $nginx_home/sbin/nginx
http_stub_status_module
location /status {
stub_status;
}
Active connections:当前状态,活动状态的连接数
accepts:统计总值,已经接受的客户端请求的总数
handled:统计总值,已经处理完成的客户端请求的总数
requests:统计总值,客户端发来的总的请求数
Reading:当前状态,正在读取客户端请求报文首部的连接的连接数
Writing:当前状态,正在向客户端发送响应报文过程中的连接数
Waiting:当前状态,正在等待客户端发出请求的空闲连接数
http_random_index_module
一般情况下,一个站点默认首页都是定义好的index.html、index.shtml等等,如果想站点下有很多页面想随机展示给用户浏览,那得程序上实现,很麻烦,使用nginx的random index即可简单实现这个功能,凡是以/结尾的请求,都会随机展示当前目录下的文件作为首页
- 添加random_index on 配置,默认是关闭的
location / {
root html;
random_index on;
index index.html index.htm;
}
- 在html目录下创建多个html页面
后记
本节的总结:
-
Nginx在分布式架构中的应用分析
-
常用的Web服务器及差异
-
Nginx的安装以及配置分析
-
Nginx虚拟主机配置
-
详解Location的匹配规则
更多架构知识,欢迎关注本套Java系列文章:Java架构师成长之路
下一篇: Qt官方示例-Markdown编辑器