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.浏览器验证
相关推荐
last demo40 分钟前
VSFTPD 服务器
linux·运维·服务器
Azure DevOps41 分钟前
Azure DevOps Server:允许讨论但不允许修改工作项
运维·microsoft·azure·devops
阿阿越42 分钟前
Linux系统编程 -- 进程(二)
linux·运维·服务器
Jerry.张蒙42 分钟前
SAP实现物料分类与订单类型匹配检查
运维·人机交互·能源·运维开发·创业创新·制造·学习方法
双木的木1 小时前
Coggle数据科学 | 并行智能体:洞察复杂系统的 14 种并发设计模式
运维·人工智能·python·设计模式·chatgpt·自动化·音视频
waves浪游1 小时前
进程控制(上)
linux·运维·服务器·开发语言·c++
Mr.Ja1 小时前
【Docker 从入门到实战】——解决跨环境部署痛点的完整指南
运维·docker·容器·dockerfile·dockerimage
q***87601 小时前
Nginx 常用安全头
运维·nginx·安全
youxiao_901 小时前
LVS负载均衡集群与LVS+Keepalived集群
运维·负载均衡·lvs