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.浏览器验证
相关推荐
子琦啊1 天前
【算法复习】字符串 | 两个底层直觉,吃透高频题
linux·运维·算法
AOwhisky1 天前
Kubernetes 学习笔记:集群管理、命名空间与 Pod 基础
linux·运维·笔记·学习·云原生·kubernetes
小龙在慢慢变强..1 天前
目录结构(FHS 标准)
linux·运维·服务器
刘延林.1 天前
win11系统下通过 WSL2 安装Ubuntu 24.04 使用RTX 5080 GPU
linux·运维·ubuntu
星恒讯工业路由器1 天前
星恒讯工业生产自动化解决方案
运维·物联网·自动化·智能路由器·信息与通信
a8a3021 天前
Laravel9.x新特性全解析
运维·spring boot·nginx
beyond阿亮1 天前
IEC104 Client Simulator - IEC104 主站/客户端模拟器 仿真器免费使用教程
运维·服务器·网络
Agent产品评测局1 天前
生产排期与MES/ERP系统打通,实操方法详解:2026企业级智能体与超自动化集成实战指南
运维·人工智能·ai·chatgpt·自动化
CodeOfCC1 天前
Linux 嵌入式arm64安装openclaw
linux·运维·服务器