一、常用外网映射工具
1.natapp
2.ngrok
二、应用场景
1.http服务器
2.虚拟主机配置
3.反向代理(负载均衡)
4.安全配置
5.API接口网关,解决跨域问题
6.实现网站动静分离
7.实现控制DDOS(安全控制)
三、Linux下安装nginx
http://nginx.org/download/nginx-1.21.1.tar.gz
1、安装
cd /usr/local/
wget http://nginx.org/download/nginx-1.21.1.tar.gz
tar -zxvf nginx-1.21.1.tar.gz
cd nginx-1.21.1
./configure
make && make install
2、启动
//启动nginx
/usr/local/nginx/sbin/nginx
//检查nginx是否启动
ps -aux | grep 'nginx'
//停止nginx
/usr/local/nginx/sbin/nginx -s stop
//重启nginx
/usr/local/nginx/sbin/nginx -s reload
四、具体应用
1、大致解释
## 服务,创建监听的端口号
server {
## 监听端口号
listen 80;
## 服务名称
server_name www.test.com;
## 匹配URL路径 /表示匹配的有路径地址
location / {
## 指向相对路径下的html文件夹
root html;
index index.html index.htm;
}
## ^~ 开头表示uri以某个常规字符串开头,不是正则匹配
## ~ 开头表示区分大小写的正则匹配;
## ~* 开头表示不区分大小写的正则匹配
## 表示/后面不能带任何字符串
location =/ {
## 指向相对路径下的html文件夹
root html;
index index.html index.htm;
}
## 效果:当url为 www.test.com/tomcat_8080 时跳转到 http://127.0.0.1:8080
## 当url为 www.test.com/tomcat_8081 时跳转到 http://127.0.0.1:8081
location =/tomcat_8080/ {
## 反向代理,跳转到另一个URL
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
location =/tomcat_8081/ {
## 反向代理,跳转到另一个URL
proxy_pass http://127.0.0.1:8081;
index index.html index.htm;
}
}
2、负载均衡
网络模型图
应用层:文件传输,电子邮件,文件服务,虚拟终端。tftp,http,snmp,ftp,smtp,dns,rip,telnet
表示层:数据格式化,代码转换,数据加密。没有协议
会话层:解除或建立与别的接点的联系。没有协议
传输层:提供端对端的接口。TCP,UDP
网络层:为数据包选择路由。IP,ICMP,OSPF,GBP,IGMP,ARP,RARP
数据链路层:传输有地址的帧以及错误检测功能。SLIP,CSLIP,PPP,MTU,ARP,RARP
物理层:以二进制数据形式在物理媒体上传输数据。ISO2110,IEEE802,IEEE802.2
负载均衡作用:
为了解决高并发,拦截所有的请求,采用负载均衡算法分配到不同的真实服务器上。减轻单台服务器的压力。
负载均衡会产生的问题:
a.分布式Session一致性问题
b.分布式Job幂等性问题
c.分布式生成全局ID
d.分布式锁解决方案
e.分布式配置中心
f.分布式日志收集系统
在Nginx中配置负载均衡:
## 定义一个或多个服务器
## 默认以轮循的方式,应用在服务器配置都差不多的时候
upstream test{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
## weight 权重,应用在给主服务器减压的情况下,主服务器配置高,其他服务器配置低
## 权重比 可用内存比,若主服务器8G内存,另一台服务器2G内存,权重比为4:1,权重越高访问越多
upstream test2{
server 127.0.0.1:8080 weight=4;
server 127.0.0.1:8081 weight=1;
#weigth参数表示权值,权值越高被分配到的几率越大 ------ 官网
}
## ip_hash IP绑定,通过nginx获取IP地址 hash运算固定分配到某个服务器上
## 可以解决session一致性问题
upstream test2{
server 127.0.0.1:8080 weight=4;
server 127.0.0.1:8081 weight=1;
#开启ip锁定
ip_hash;
}
## 配置负载均衡案例
server {
listen 80;
server_name www.test.com;
charset utf-8;
location / {
## 使用反向代理指向 test
proxy_pass http://test;
index index.html index.htm;
}
}
## 配置负载均衡故障转移
server {
listen 80;
server_name www.test.com;
charset utf-8;
location / {
## 使用反向代理指向 test
proxy_pass http://test2;
index index.html index.htm;
###nginx访问服务器超时时间 后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_timeout 2s;
###nginx发送给上游服务器(真实访问的服务器)超时时间
proxy_send_timeout 2s;
### nginx接受上游服务器(真实访问的服务器)超时时间
proxy_read_timeout 2s;
}
}
3、nginx rewrite用法
nginx的rewrite规则就是使用正则匹配请求的Url,然后根据定义的规则进行重写和改变,需要ngx_http_rewrite_module模块来支持url重写功能,该模块是标准模块,默认已经安装。
变量:
$args:等于请求中的参数,同$query_string。
$content length:请求头中的Content-length字段。
$content_type:请求头中的Content-type。
$document_root:当前请求在root指令中指定的值 。
$host:请求主机头字段,否则为服务器名称。
$http_user_agent:客户端agent信息。
$http_cookie:客户端cookie信息。
$limit_rate:这个变量可以限制连接速率。
$request_method:客户端请求的动作,通常为GET或POST。
$remote_addr:客户端的IP地址。
$remote_port:客户端的端口。
$remote_user:已经经过Auth Basic Module验证的用户名。
$request_filename:当前请求的文件路径,由root或alias指令与URI请求生成。
$scheme:HTTP方法(如http,https)。
$server_protocol:请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$server_addr:服务器地址,在完成一次系统调用后可以确定这个值。
$server_name:服务器名称。
$server_port:请求到达服务器的端口号。
$request_uri:包含请求参数的原始URI,不包含主机名,如”/foo/bar.php?arg=baz”。
$uri:不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。
$document_uri:与$uri相同。
具体用法:
server {
listen 80;
server_name 41.111.69.101;
charset utf-8;
## rewrite 规则一般写在server里,或location里
## 判断访问的IP地址为192.168.1.1 则返回403
if ($remote_addr = 192.168.1.1) {
return 403;
}
## 不允许谷歌浏览器访问 如果是谷歌浏览器返回500
if ($http_user_agent ~ Chrome) {
return 500;
}
}