记录一下Nginx代理的网页必须登录后才能访问

前言:某些情况下,我们可能需要给个网站地址让了解的人去访问,这个地址可能访问的信息比较机密,而nginx代理的这个地址可能不是个服务,而是个静态的文件啥的,为了防止第三方能够访问,那么该地址必须授权才能访问是很有必要的了!

1、准备工作

在安装了Nginx环境的服务器上安装httpd插件,这个插件是登录授权必不可少的工具

1
$ yum install -y httpd

2、实例化需要的登录账号和密码

  • 创建一个文件夹存放实例化后的登录账号和密码

    (根据个人情况去实例化,方便好记就行)我这里就创建在Nginx下,毕竟是Nginx使用的文件

1
$ mkdir /etc/nginx/db
  • 创建账号密码

    这里的user 即登录账号(别忘记了修改,不然登录账号就是user了!)

    1
    $ htpasswd -c /etc/nginx/db/passwd.db user

    eg:

    这里的zhangsan即登录账号

    1
    $ htpasswd -c /etc/nginx/db/passwd.db zhangsan

    输入以上命令后,会提示你输入两次密码,按提示操作即可。

    也可以使用以下命令一次性添加账号密码

    1
    $ htpasswd -b /etc/nginx/db/passwd.db lishi 123456

3、Nginx配置登录授权

找到我们需要登录授权的代理配置,填入以下配置即可:

1
2
3
auth_basic "secret";
# 即第二步实例化的账号密码文件
auth_basic_user_file /etc/nginx/db/passwd.db;

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
listen 80;
server_name localhost;
location / {
auth_basic "secret";
auth_basic_user_file /etc/nginx/db/passwd.db;
proxy_pass http://127.0.0.1:8631;
proxy_redirect default;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $remote_addr;

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

}

4、刷新Nginx配置

校验Nginx配置

1
2
3
4
5
$ nginx -t 

# 得到如下回显
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

刷新Nginx配置

1
$ nginx -s reload

5、访问

image-20220825182354527

输入示例的账号和密码后即可,如果不输入,网页是无法访问的,

不输入回显界面

image-20220825182512320