当前位置: 首页 > news >正文

基于 Nginx 搭建 OpenLab 多场景 Web 网站:从基础配置到 HTTPS 加密全流程

一、需求分析

1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!!

2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于

  • www.openlab.com/student 网站访问学生信息
  • www.openlab.com/data网站访问教学资料
  • www.openlab.com/money 网站访问缴费网站

3.要求

(1)学生信息网站只有song和tian两人可以访问,其他用户不能访问。

(2)访问缴费网站实现数据加密基于https访问。

二、环境准备

本次搭建基于openEuler 22.03系统,主要用到的工具包括:

  • Nginx:作为 Web 服务器
  • httpd-tools:提供用户认证工具htpasswd
  • OpenSSL:生成 SSL 证书,实现 HTTPS 加密

三、实现步骤

1.检查防火墙及SELinux是否关闭

首先检查关闭安全软件

[root@master ~]# systemctl status firewalld
○ firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabl>Active: inactive (dead)Docs: man:firewalld(1)
[root@master ~]# getenforce 
Disabled

2.接着下载所需相关软件

# 安装所需软件
[root@master ~]# yum  install nginx   -y# Windows的C:\Windows\System32\drivers\etc\hosts  文件进行DNS映射
192.168.120.128  www.openlab.com  # 添加#用vim命令打开/etc/hosts  文件进行DNS映射
192.168.120.128  www.openlab.com  # 添加#设置开机启动
[root@master ~]# systemctl enable --now nginx

3.搭建网站目录及基础页面

(1)创建目录结构

为网站主页面和子页面创建对应的目录:

[root@master ~]# mkdir -p /www/openlab  #主页面目录
[root@master ~]# mkdir -p /www/openlab/data  #教学资料页面目录
[root@master ~]# mkdir -p /www/openlab/student  #学生信息页面目录
[root@master ~]# mkdir -p /www/openlab/money  #缴费网站目录
[root@master ~]# tree /www
/www
└── openlab├── data├── money└── student4 directories, 0 files
(2)创建页面内容

为每个目录编写基础 HTML 页面:

# 主页面:显示"welcome to openlab"
[root@master ~]# echo "welcome to openlab" > /www/openlab/index.html
# 教学资料页面:显示"data"
[root@master ~]# echo "data" > /www/openlab/data/index.html
# 学生信息页面:显示"student"
[root@master ~]# echo "student" > /www/openlab/student/index.html
# 缴费网站页面:显示"money"
[root@master ~]# echo "money" > /www/openlab/money/index.html
[root@master ~]# tree /www
/www
└── openlab├── data│   └── index.html├── index.html├── money│   └── index.html└── student└── index.html4 directories, 4 files

4. 配置 Nginx 实现域名访问

(1)修改 Nginx 主配置文件/etc/nginx/nginx.conf,创建主网站www.openlab.com (核心配置如下):
[root@master ~]# vim /etc/nginx/nginx.conf
server {listen       80;   # 监听80端口(HTTP)server_name  www.openlab.com;   # 绑定域名root         /www/openlab;   # 主页面根目录}
[root@master ~]# systemctl restart nginx
(2)创建教学资料子网站www.openlab.com/data

修改 Nginx 主配置文件/etc/nginx/nginx.conf,定义域名、监听端口及目录映射:

[root@master ~]# vim /etc/nginx/nginx.conf   # 接着之前的继续向下编写
server {listen       80;server_name  www.openlab.com;root         /www/openlab;#增加如下配置location /data {alias   /www/openlab/data;index   index.html      index.htm;}
[root@master ~]# nginx -t   # 检查语法,显示"ok"和"successful"说明正确
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@master ~]# systemctl restart nginx
(3)创建学生信息子网站www.openlab.com/student

通过htpasswd工具创建用户认证文件,限制仅songtian访问:

第一步!!!!!!
[root@master ~]# yum install httpd-tools -y  # 若已安装会提示"already installed"第二步  创建用户并且设置登陆密码!!!!!!
[root@master ~]# useradd song
[root@master ~]# passwd song
更改用户 song 的密码 。
新的密码: 
无效的密码: 密码少于 8 个字符
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。
[root@master ~]# useradd tian
[root@master ~]# passwd tian 
更改用户 tian 的密码 。
新的密码: 
无效的密码: 密码少于 8 个字符
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。第三步  创建认证用户文件!!!!!
# 创建用户文件并添加song(-c表示创建新文件)
[root@master ~]# htpasswd -c /www/openlab/student/passwd song
New password:    #密码123456
Re-type new password: 
Adding password for user song
# 添加tian用户(无需-c,避免覆盖现有文件)
[root@master ~]# htpasswd  /www/openlab/student/passwd tian
New password:    #密码123456
Re-type new password: 
Adding password for user tian
#查看用户文件确认配置:
[root@master ~]# cat /www/openlab/student/passwd 
song:$apr1$qj/UmGMC$1sOO0SB9h8H8ALOK4BXiU/
tian:$apr1$kzjNlDCe$6hf5GvkU1oSUe5ZK8eiwg.第四步  编写配置文件!!!!!
[root@master ~]# vim /etc/nginx/nginx.conf   # 接着之前的继续向下编写
server {listen       80;server_name  www.openlab.com;root         /www/openlab;location /data {alias   /www/openlab/data;index   index.html      index.htm;}#增加如下配置location /student {alias   /www/openlab/student;index   index.html      index.htm;auth_basic      "please input password";auth_basic_user_file    /www/openlab/student/passwd;}
}
[root@master ~]# systemctl restart nginx
(4)创建缴费子网站www.openlab.com/money

通过 OpenSSL 生成 SSL 证书,实现www.openlab.com/money的 HTTPS 访问。

第一步   生成 SSL 私钥和证书!!!!!# 在/etc/nginx目录下制作整数所用的私钥文件money.key
[root@master ~]# openssl genrsa -aes128 2048 > /etc/nginx/money.key
Generating RSA private key, 2048 bit long modulus (2 primes)
....+++++
.+++++
e is 65537 (0x010001)
Enter pass phrase:   # 输入加密私钥的密码123456
Verifying - Enter pass phrase:   # 再输一遍# 制作证书
[root@master ~]# openssl req -utf8 -new -key /etc/nginx/money.key  -x509 -days 365 -out /etc/nginx/money.crt
Enter pass phrase for /etc/nginx/money.key:   # 需要输入加密私钥的密码
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) [AU]:86                                      # 国家代码
State or Province Name (full name) [Some-State]:shaanxi                   # 省份
Locality Name (eg, city) []:xi'an                                         # 城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:openlab        # 公司
Organizational Unit Name (eg, section) []:test                            # 部门
Common Name (e.g. server FQDN or YOUR name) []:master                     # 主机名
Email Address []:612612@qq.com                                            # 邮箱第二步  移除私钥密码(避免 Nginx 启动需手动输入密码)!!!# 在加载SSL支持的Nginx并使用上述私钥时除去必须的口令        
[root@master ~]# cp /etc/nginx/money.key /etc/nginx/money.key.org
[root@master ~]# openssl rsa -in /etc/nginx/money.key.org /etc/nginx/money.key
rsa: Use -help for summary.
[root@master ~]# openssl rsa -in /etc/nginx/money.key.org -out /etc/nginx/money.key
Enter pass phrase for /etc/nginx/money.key.org:        # 输入加密私钥的密码
writing RSA key第三步   配置 Nginx 的 HTTPS 服务!!!!!
[root@master ~]# vim /etc/nginx/nginx.conf
server {listen       80;server_name  www.openlab.com;root         /www/openlab;location /data {alias   /www/openlab/data;index   index.html      index.htm;}location /student {alias   /www/openlab/student;index   index.html      index.htm;auth_basic      "please input password";auth_basic_user_file    /www/openlab/student/passwd;}# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}#增加以下内容server {listen       443 ssl http2;server_name     www.openlab.com;location /money {alias   /www/openlab/money;index   index.html index.htm;}ssl_certificate "/etc/nginx/money.crt";ssl_certificate_key "/etc/nginx/money.key";}#再次检查配置并重启 Nginx: 
[root@master ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@master ~]# systemctl restart nginx

四、测试验证

1.主页面访问:在浏览器输入www.openlab.com,显示welcome to openlab

2.教学资料页面:访问www.openlab.com/data,显示data

3.学生信息页面:访问www.openlab.com/student,弹出认证窗口,输入songtian的用户名和密码后显示student(输入错误则无法访问)

倘若我们输入错误的用户名sun,就会被拒绝访问

我们输入正确的用户名和密码song,就可以看到内容了

4.缴费网站:访问https://www.openlab.com/money(注意是 https),浏览器可能提示证书不受信任(自签名证书正常现象),确认后显示money

在windows端打开浏览器,输入https://192.168.120.128,点击高级->接受风险并继续,就可以看到内容啦

五、总结

这次搭网站踩了不少坑,比如忘了关防火墙、改配置文件格式错了、生成证书时密码弄混了,但一步步试下来终于成了。感觉 Nginx 还挺强大的,能弄这么多不同的页面设置。以后再搭类似的网站,应该就不会这么手忙脚乱了,还可以使用内网穿透实现访问,但是不如花钱性能好哦

http://www.lryc.cn/news/595025.html

相关文章:

  • ORA-00600: internal error code, arguments: [krse_arc_source_init.1], [4], [2]
  • 汽车售后诊断仪DoIP和CANBus诊断指令分析
  • Milvus:开源向量数据库的初识
  • HTTP性能优化:打造极速Web体验的关键策略
  • Python 进阶(五): Excel 基本操作
  • Android 版本与 API 级别对照速查表
  • Go语言进阶书籍:Go语言高级编程(第2版)
  • Spring Boot05-热部署
  • Python 高效创建多项式及相关计算方法
  • 基于dcmtk的dicom工具 第八章 echoSCU-dicom测试连接
  • Prompt Engineering(提示词工程)基础了解
  • 第三章自定义检视面板_创建自定义编辑器类_编扩展默认组件的显示面板(本章进度6/9)
  • 14.6 《3步实战LLaMA2-7B指令微调:Hugging Face生态+LoRA技术,MT-Bench得分从5.1直升7.3》
  • LeetCode - 3274. Check if Two Chessboard Squares Have the Same Color
  • 数据结构之克鲁斯卡尔算法
  • C#/.NET/.NET Core技术前沿周刊 | 第 47 期(2025年7.14-7.20)
  • Leetcode力扣解题记录--第238题(前/后缀积)
  • OpenCV学习(二)-二维、三维识别
  • 软件工厂 DevSecOps 场景下的测试体系建设实践
  • Facebook 开源多季节性时间序列数据预测工具:Prophet 乘性季节性 Multiplicative Seasonality
  • 昇腾310P软件安装说明
  • Python----NLP自然语言处理(Doc2Vec)
  • 7-Zip 曝出两个可导致拒绝服务的中危漏洞
  • 【网络安全】DDOS攻击
  • (7)ROS2-MUJOCO联合仿真环境迁移优化
  • 网络协议(三)网络层 IPv4、CIDR(使用子网掩码进行网络划分)、NAT在私网划分中的应用
  • 零基础数据结构与算法——第五章:高级算法-回溯算法N皇后问题
  • uniapp+vue3预约时间和日期
  • 布局AI +文化新赛道,浙江省文化产业投资集团赴景联文科技调研交流
  • 算法-比较排序