反向代理
正向代理
所谓的正向代理,通俗来说就是,正向代理是一个位于客户端和目标服务器之间的服务器,它代表客户端向目标服务器发起请求。但是我们客户机学院手动配置代理服务器、
反向代理
普通反向代理
反向代理就是,客户机不需要做任何的配置,我们只需将服务请求发给代理服务器,代理服务器它自己 根据策略选择服务器给予相应,对于客户端来说可以说是相当奈斯。
使用 Nginx 实现反向代理的方法是在 Nginx 配置文件中设置 location
块,并使用 proxy_pass
指令指定后端服务器的地址。例如:
location / {
proxy_pass http://backend;
}
分析解释
backed不一定非要是IP地址,也可以是一个解析组,看下面负载均衡就知道了。
proxy_pass http://backend;其实这里也可以不加http://这个部分,但是如果不加是Nginx会使用与客户端请求相同的协议。这个好处就在于可以灵活的匹配,但是缺点就是安全性可能有些问题。
四层反向代理
负载均衡
Nginx 的负载均衡功能是指在多个后端服务器之间分配客户端请求,以提高系统的可用性和性能。
在 Nginx 配置文件中,可以使用 upstream
指令定义一个后端服务器组,并在 location
块中使用 proxy_pass
指令将请求转发到该服务器组
例如:
[root@centos8 ~]# cat /apps/nginx/conf/conf.d/pc.conf
upstream webserver {
#ip_hash;
#hash $request_uri consistent;
#hash $cookie_lee
#least_conn;
server 172.25.254.20:8080 weight=1 fail_timeout=15s max_fails=3;
server 172.25.254.30:80 weight=1 fail_timeout=15s max_fails=3;
server 172.25.254.10:80 backup;
}
server {
listen 80;
server_name www.timinglee.org;
location ~ / {
proxy_pass http://webserver;
}
这段nginx配置定义了一个名为webserver的上游服务器组,其中包含三个服务器:
172.25.254.20:8080,权重为1,失败超时时间为15秒,最大失败次数为3次。
172.25.254.30:80,权重为1,失败超时时间为15秒,最大失败次数为3次。
172.25.254.10:80,作为备份服务器。
接下来定义了一个名为www.timinglee.org的服务器,监听80端口。当访问该域名时,请求会被代理到webserver上游服务器组中的服务器。
HTTPS配置
基本配置
在 Nginx 中配置 HTTPS,需要先生成 SSL 证书和私钥,然后将它们放在 Nginx 配置文件指定的目录中。接下来,在 Nginx 配置文件中添加一个新的 server
块,监听 443 端口,并使用 ssl_certificate
和 ssl_certificate_key
指令指定证书和私钥的路径。例如:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/ssl_certificate.crt;
ssl_certificate_key /path/to/ssl_private_key.key;
location / {
# 其他配置...
}
}
Nginx 账户认证功能
此功能由 ngx_http_auth_basic_module 模块提供此功能
示例:
[root@Nginx ~]# htpasswd -cmb /usr/local/nginx/conf/.htpasswd admin lee #-b 表
示非交互建立用户认证
Adding password for user admin
[root@Nginx ~]# htpasswd -mb /usr/local/nginx/conf/.htpasswd lee lee
Adding password for user lee
[root@Nginx ~]# cat /usr/local/nginx/conf/.htpasswd
admin:$apr1$haGCKgCT$myogggALmqNecTyNupsWQ/
lee:$apr1$H97AyQPF$kGU.Tc4zn1E4Zkp/M4R6G.
}
[root@Nginx ~]# mkdir /webdata/nginx/timinglee.org/lee/login
[root@Nginx ~]# echo login > /webdata/nginx/timinglee.org/lee/login/index.html
[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf
server {
listen 80;
server_name lee.timinglee.org;
location /login {
root /webdata/nginx/timinglee.org/lee;
index index.html;
auth_basic "login password";
auth_basic_user_file "/usr/local/nginx/conf/.htpasswd";
}
#重启Nginx并访问测试
[root@node100 ~]# curl lee.timinglee.org/login/ -u lee:lee
login
[root@node100 ~]# curl lee.timinglee.org/login/ -u admin:lee
login