【基础篇】nginx代理、动静分离、路径重写、高可用以及https配置

目录

正向代理

反向代理

负载均衡

负载均衡的策略

动静分离

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;
        }


    }

}

 

负载均衡的策略

轮询
默认情况下使用轮询方式,逐一转发,这种方式适用于无状态请求。
weight( 权重 )
指定轮询几率, weight 和访问比率成正比,用于后端服务器性能不均的情况
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机器。
ip_hash
根据客户端的 ip 地址转发同一台服务器,可以保持回话。
least_conn
最少连接访问
url_hash
根据用户访问的 url 定向转发请求
fair
根据后端服务器响应时间转发请求

动静分离

现在有一台tomcat,一台nginx反向代理tomcat,对于静态资源类型访问通常是比较频繁的,因此将静态资源直接放在nginx服务器上,可以使访问速度快上许多

增加每一个 location
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  
location ~*/(css|img|js) {
    root /usr/local/nginx/static;
    index index.html index.htm;
}

location 匹配顺序
  • 多个正则location直接按书写顺序匹配,成功后就不会继续往后面匹配
  • 普通(非正则)location会一直往下,直到找到匹配度最高的(最大前缀匹配)
  • 当普通location与正则location同时存在,如果正则匹配成功,则不会再执行普通匹配
  • 所有类型location存在时,“=”匹配 > “^~”匹配 > 正则匹配 > 普通(最大前缀匹配)

aliasroot 

location /css {
    alias /usr/local/nginx/static/css;
    index index.html index.htm;
}
root 用来设置根目录,而 alias 在接受请求的时候在路径上不会加上 location
1 alias 指定的目录是准确的,即 location 匹配访问的 path 目录下的文件直接是在 alias 目录下查找的;
2 root 指定的目录是location 匹配访问的 path 目录的上一级目录 , 这个 path 目录一定要是真实存在 root 指定目录下的;
3 )使用alias标签的目录块中不能使用 rewrite break (具体原因不明);另外, alias 指定的目录后面必须要加上 "/" 符号!!
4 alias 虚拟目录配置中, location 匹配的 path 目录如果后面不带 "/" ,那么访问的 url 地址中这个 path 目录后面加不加"/" 不影响访问,访问时它会自动加上 "/" ; 但是如果 location 匹配的 path 目录后面加上 "/" ,那么访问的 url 地址中这个path 目录必须要加上 "/" ,访问时它不会自动加上 "/" 。如果不加上 "/" ,访问就会失败!
5 root 目录配置中,location 匹配的 path 目录后面带不带 "/" ,都不会影响访问。

UrlRewrite(资源路径重写)

rewrite 是实现 URL 重写的关键指令,根据 regex ( 正则表达式 ) 部分内容,
重定向到 replacement ,结尾是 flag 标记。
rewrite <regex> <replacement> [flag];
关键字   正则          替代内容      flag 标记
关键字:其中关键字 error_log 不能改变 正则: perl 兼容正则表达式语句进行规则匹配
替代内容:将正则匹配的内容替换成 replacement
flag 标记: rewrite 支持的 flag 标记
rewrite 参数的标签段位置:
server,location,if
flag 标记说明:
  • 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 中的某一个。
在需要防盗链的 location 中配置
valid_referers 192.168.44.101;
if ($invalid_referer) {
    return 403;
}

使用 curl 测试
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 编译安装
如遇报错提示
configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!
安装依赖
yum install openssl-devel
安装方式二、yum安装
yum install keepalived
配置
使用 yum 安装后配置文件在
/etc/keepalived/keepalived.conf
最小配置
第一台机器
! 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协议

采用对称加密算法(凯撒算法),即客户端和服务器各自有特定的不会变化的钥匙进行加密和解密,灵活性低且不安全

openssl
openssl 包含: SSL 协议库、应用程序以及密码算法库
将不安全的http转化为安全的https
将新购买的域名映射到新购买的主机上

 通过域名访问时显示的是不安全的连接

此时通过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进行安装即可 

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zoeil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值