目录
正向代理
反向代理
负载均衡
负载均衡的策略
动静分离
alias与root
UrlRewrite(资源路径重写)
防盗链配置
高可用配置
Https证书配置
安装BBS(开源界的鼻祖)
正向代理
用户知道nginx服务器的存在,与nginx服务器是一伙的。例如:公司内的电脑要通过代理服务器(nginx)连接外网
反向代理
用户不知道nginx的存在,nginx是与服务端一伙的。
有性能瓶颈,因为所有的数据都经过Nginx,所以Nginx服务器的性能至关重要
负载均衡
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream httpsd {
server 192.168.23.101:80;
server 192.168.23.102:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://httpsd;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
负载均衡的策略
upstream httpd {
server 127.0.0.1:8050 weight=10 down;
server 127.0.0.1:8060 weight=1;
server 127.0.0.1:8060 weight=1 backup;
}
- down:表示当前的server暂时不参与负载
- weight:默认为1.weight越大,负载的权重就越大。
- backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。
动静分离
现在有一台tomcat,一台nginx反向代理tomcat,对于静态资源类型访问通常是比较频繁的,因此将静态资源直接放在nginx服务器上,可以使访问速度快上许多
location /css {
root /usr/local/nginx/static;
index index.html index.htm;
}
location /images {
root /usr/local/nginx/static;
index index.html index.htm;
}
location /js {
root /usr/local/nginx/static;
index index.html index.htm;
}
这里也可以使用正则表达式进行匹配,这样子只需要写一个location
- / 通用匹配,任何请求都会匹配到。
- = 精准匹配,不是以指定模式开头
- ~ 正则匹配,区分大小写
- ~* 正则匹配,不区分大小写
- ^~ 非正则匹配,匹配以指定模式开头的location
location ~*/(css|img|js) {
root /usr/local/nginx/static;
index index.html index.htm;
}
- 多个正则location直接按书写顺序匹配,成功后就不会继续往后面匹配
- 普通(非正则)location会一直往下,直到找到匹配度最高的(最大前缀匹配)
- 当普通location与正则location同时存在,如果正则匹配成功,则不会再执行普通匹配
- 所有类型location存在时,“=”匹配 > “^~”匹配 > 正则匹配 > 普通(最大前缀匹配)
alias与root
location /css {
alias /usr/local/nginx/static/css;
index index.html index.htm;
}
UrlRewrite(资源路径重写)
- last #本条规则匹配完成后,继续向下匹配新的location URI规则
- break #本条规则匹配完成即终止,不再匹配后面的任何规则
- redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
- permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
实例
rewrite ^/([0-9]+).html$ /index.jsp?pageNum=$1 break;
访问:http://192.168.23.100/3.html
真实的访问uri是:http://192.168.23.100/index.jsp?pageNum=3
防盗链配置
valid_referers none | blocked | server_names | strings ....;
- none, 检测 Referer 头域不存在的情况。
- blocked,检测 Referer 头域的值被防火墙或者代理服务器删除或伪装的情况。这种情况该头域的值不以 “http://” 或 “https://” 开头。
- server_names ,设置一个或多个 URL ,检测 Referer 头域的值是否是这些 URL 中的某一个。
valid_referers 192.168.44.101;
if ($invalid_referer) {
return 403;
}
curl -I http://192.168.44.101/img/logo.png
curl -e "http://baidu.com" -I http://192.168.44.101/img/logo.png
高可用配置
使用keepalived维持nginx集群的高可用是比较简单的一种方式,通过安装keepalived并配置keepalived.conf,使得客户端访问一个虚拟ip,当主机nginx挂掉后,从机也能顶上去
https://www.keepalived.org/download.html#
configure: error:!!! OpenSSL is not properly installed on your system. !!!!!! Can not include OpenSSL headers files. !!!
yum install openssl-devel
yum install keepalived
! Configuration File for keepalived
global_defs {
router_id lb100
}
vrrp_instance atguigu {
state MASTER # 备份服务器上这里写的是BACKUP
interface ens33 # 网卡的名称
virtual_router_id 51 # 主备机的virtual_router_id必须相同
priority 100 # 主备机取不同的优先级,主机值较大,备份机值较小
advert_int 1 # 隔多久发一次心跳
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.23.200
}
}
第二台机器
! Configuration File for keepalived
global_defs {
router_id lb110
}
vrrp_instance atguigu {
state BACKUP
interface ens33
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.44.200
}
}
systemctl start keepalived
此时在第一台机器上通过ip addr可以看到ens33下有一个虚拟IP 192.168.44.200,第二台机器则没有。把第一台机器关机模拟nginx下线后,第二台机器下也会出现虚拟IP了 。
hadoop100
hadoop101
手动关闭Hadoop100的nginx服务和keepalived服务
此时hadoop100
hadoop101
Https证书配置
不安全的http协议
采用对称加密算法(凯撒算法),即客户端和服务器各自有特定的不会变化的钥匙进行加密和解密,灵活性低且不安全
通过域名访问时显示的是不安全的连接
此时通过https://域名的方式请求会发现网站拒绝访问
首先申请SSL证书,这里我们选择阿里云
通过签发后下载nginx的证书
将证书放到nginx的conf目录下,在nginx.conf目录中加入配置,证书会自动在conf目录下查找
server {
listen 443 ssl;
server_name localhost;ssl_certificate pem文件的名字;
ssl_certificate_key key文件的名字;
}
重启nginx.service服务,通过https://域名访问,此时已经显示网站安全
安装BBS(开源界的鼻祖)
将安装包放到html目录下
在html目录下通过unzip Discuz_X3.4_SC_UTF8_20220131.zip解压
然后通过域名访问bbs/install进行安装即可