nginx的https搭建

实验要求

1.防火墙不能关闭,让其开放http协议https协议

2.该网站具备账户验证

3.https

1.打开防火墙并把http和https服务(允许80/tcp和443/tcp端口)

1-1打开防火墙和nginx服务

bash 复制代码
//1.查看服务状态
[root@server ~]# systemctl status firewalld.service 
○ firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
     Active: inactive (dead)
       Docs: man:firewalld(1)
[root@server ~]# systemctl status nginx.service 
● nginx.service - The nginx HTTP and reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
     Active: active (running) since Thu 2025-11-27 14:39:08 CST; 2min 9s ago
    
//2.开启未开启的服务
[root@server ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
     Active: active (running) since Thu 2025-11-27 14:42:51 CST; 2s ago
[root@server ~]# 

1-2允许http和https

bash 复制代码
#1.添加服务的方式允许nginx
firewall-cmd --add-service=http
firewall-cmd --add-service=https

#2.添加端口的方式允许nginx
firewall-cmd --add-port=80/tcp
firewall-cmd -add-port=443/tcp

[root@server ~]# firewall-cmd --add-port=80/tcp
success
[root@server ~]# firewall-cmd --add-port=443/tcp
success

#取消
firewall-cmd --remove-port=80/tcp
firewall-cmd --remove-service=http


#注意:如果不保存,防火墙服务重启时这些规则会消失

#保存命令即在选项前加--permanent(永久的长久的)
firewall-cmd --permanent --add-service=http
#重新加载
firewall-cmd --reload

#永久删除同理
firewall-cmd --permanent --remove-service=http

1-3验证

bash 复制代码
# 查看当前活动的防火墙规则
firewall-cmd --list-all


[root@server ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 80/tcp 443/tcp
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	rule family="ipv4" source address="192.168.25.200" service name="http" reject
[root@server ~]# 


# 只查看开放的端口
firewall-cmd --list-ports
[root@server ~]# firewall-cmd --list-ports 
80/tcp 443/tcp
[root@server ~]# 


# 只查看允许的服务
firewall-cmd --list-services

2.网站要进行用户验证

bash 复制代码
1.新增一个管理网站登录的用户(用于用户验证)
[root@server ~]# useradd xier0
[root@server ~]# passwd xier0
更改用户 xier0 的密码 。
新的密码: 
无效的密码: 密码少于 8 个字符
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# 


2.将网站和账户关联
2-1 安装工具httpd-tools
yum install httpd-tools
2-2 使用htpasswd命令关联用户和网站
htpasswd -c /etc/nginx/passwd xier1
New password:

#-c: 表示创建一个新的密码文件
#- 重要性 : 如果指定的文件已存在,使用 -c 选项会覆盖该文件
#- 注意事项 : 当要向现有文件添加新用户时,不应该使用此选项
#- 密码强度 : 系统会接受任何密码,但强密码对安全性至关重要
#- 加密算法 : 默认使用 MD5 哈希,可通过 -B (bcrypt)、 -d (CRYPT)等选项指定其他算法

3.修改nginx的配置文件
vim /etc/nginx/nginx.conf


  36     include /etc/nginx/conf.d/*.conf;
  37 
  38     server {
  39         listen       80;
  40         #listen       [::]:80;
  41         server_name  www.xier0.com;
  42         #root         /usr/share/nginx/html;
  43     root         /web;
  44     #   index        wanglx.html;
  45     autoindex   on;
  46     #index      2.png;
  47     auth_basic  "input your passwd";//登录提示
  48     auth_basic_user_file    /etc/nginx/passwd;//管理网站的密码文件
  49 
  50         # Load configuration files for the default server block.
  51         include /etc/nginx/default.d/*.conf;
  52 
  53         error_page 404 /404.html;
  54         location = /404.html {
  55         }
  56 
  57         error_page 500 502 503 504 /50x.html;
  58         location = /50x.html {
  59         }
  60     }
  61 
  62 # Settin

4.检查并重新加载
nginx -t
nginx -s reload

5.浏览器验证

注意:如果使用windows浏览器验证,要在

C:\Windows\System32\drivers\etc\hosts文件中添加对应网站域名的IP地址解析

2-2如果已经有管理账户的密码文件,则

bash 复制代码
[root@server ~]# htpasswd /etc/nginx/passwd xier0
New password:                              #(xier)
Re-type new password: 
Adding password for user xier0
[root@server ~]# 

// 如果该用户名已存在,将更新其密码

//- -D :删除用户,例如 htpasswd -D /etc/nginx/passwd xier1
//- -v :验证用户密码是否正确
//- -b :在命令行中直接提供密码(不推荐,因为密码会显示在命令历史中)

3.搭建https

https即http + ssl(socket secret layer)

3-1 创建https网页证书

bash 复制代码
//1.创建非对称加密使用的私钥文件
openssl genrsa -out xier1.key

//2.通过私钥文件生成证书文件
openssl req -new -key xier1.key -x509 -days 365 -out xier1.crt
// req:申请创建证书
//-new:新的证书
//-key xier1.key:使用xier1.key这个密钥
//-x509: 此为测试证书
/-days: 证书有效期

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:guangxi
Locality Name (eg, city) [Default City]:huilin
Organization Name (eg, company) [Default Company Ltd]:eg
Organizational Unit Name (eg, section) []:xi^Huexiao
Common Name (eg, your name or your server's hostname) []:xier0,^H^H^H
Email Address []:xier

3-2

bash 复制代码
//1.将生成的证书移动到nginx配置目录中'
[root@server xier]# mv xier0.key xier0.crt /etc/nginx/
[root@server xier]# 


//2.绑定虚拟主机和证书
server {
    listen 443 ssl;                  # 监听443端口并启用SSL
    server_name www.xier1.com;         # 你的域名
    
    # SSL证书配置
    ssl_certificate /etc/nginx/xier1.crt;    # 证书文件路径
    ssl_certificate_key /etc/nginx/xier1.key;  # 私钥文件路径
    
    
    # 网站根目录
    root /var/www/html;              # 你的网站文件目录
    index index.html index.htm index.php;  # 默认索引文件
    
  
    }

}


//3.检查并重新加载
nginx -t
nginx -s reload

//4.浏览器验证
相关推荐
FL16238631291 分钟前
win11+WSL+Ubuntu-xrdp+远程桌面闪退+黑屏闪退解决
linux·运维·ubuntu
AOwhisky43 分钟前
Linux逻辑卷管理:从“固定隔间”到“弹性存储池”的智慧
linux·运维·服务器
05大叔1 小时前
大事件Day02
运维·服务器
五仁火烧2 小时前
Vue3 项目的默认端口行为
服务器·vue.js·nginx·容器·vue
C Yu小白2 小时前
Linux系统调用与文件操作详解
linux·运维·服务器
ZFB00012 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——常见用户组简介
linux·运维·kylin
acrelgxy2 小时前
告别被动抢修与盲目巡检!安科瑞运维云平台,让电力系统实现预测性守护。
运维·电力监控系统·智能电力仪表
EndingCoder2 小时前
类的继承和多态
linux·运维·前端·javascript·ubuntu·typescript
Anyexyz3 小时前
【更新】境内 Docker 镜像状态监控——配置生成,一键复制!
运维·docker·容器
信创天地3 小时前
深耕金融政务核心场景:国产化数据库迁移的全流程架构设计与风险管控
运维·网络安全·系统架构·系统安全·运维开发