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.浏览器验证
相关推荐
Leinwin4 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382504 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇4 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7595 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣5 小时前
智能体选型实战指南
运维·人工智能
yy55275 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ6 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔8 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密8 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20158 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑