Nginx从入门到实践全指南
1 www简介
-
Web网络服务也叫WWW(World Wide Web 全球信息广播)万维网服务,一般是指能够让用户通过浏览器访问到互联网中文档等资源的服务
-
Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的 Web 服务器会通过 HTTP(超文本传输协议)或HTTPS(安全超文本传输协议)把请求的内容传送给用户
1.1 常见Web服务程序介绍:
- Windows系统中默认Web服务程序是I I S(Internet Information Services),这是一款图形化的网站管理工具,IIS程序不光能提供Web网站服务,还能够提供FTP、NMTP、SMTP等服务功能,但只能在Windows系统中使用

- 2004 年 10 月 4 日,为俄罗斯知名门户站点而开发的 Web 服务程序 Nginx 横空出世。Nginx程序作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市场,但Nginx 最被认可的还当是低系统资源占用、内存少且并发能力强,因此得到了国内诸如新浪、网易、腾讯等门户站的青睐

- Apache------取自美国印第安人土著语Apache,寓意着拥有高超的作战策略和无穷的耐性,由于其跨平台和安全性广泛被认可且拥有快速、可靠、简单的API扩展。目前拥有很高的Web服务软件市场占用率,全球使用最多的Web服务软件,开源、跨平台(可运行于Unix,linux,windows中)

- Tomcat------属于轻量级的Web服务软件,一般用于开发和调试JSP代码,通常认为Tomcat是Apache的扩展程序

1.2 网址及HTTP简介
- web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在 /var/www/html 。
- 浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的
URL
-
Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址
-
网址格式:
<协议>://<主机或主机名>[:port]/<目录资源,路径> -
协议::http、https、ftp等
-
主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了
-
端口号(port):http为80,https为443 (IANA:互联网数字分配机构)
- 0-1023:永久地分配给固定的应用程序使用
- 1024-41951:注册端口,但要求不是特别严格,分配给程序注册为某应用使用
- 41952-60000:客户端程序随机使用的端口,动态端口,或私有端口
http请求方法:
- 工作机制:

- 在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。
| 请求方法 | 协议版本 | 说明 |
|---|---|---|
| GET | 0.9 | 获取资源,可以理解为读取或者下载数据 |
| HEAD | 1.0 | 获取资源,和 GET 类似,不返回具体数据,只需要头信息 |
| POST | 1.0 | 向服务端提交数据,数据通常交由后端程序处理 |
| PUT | 1.1 | 向服务端提交数据,数据直接存储在服务器上 |
| PATCH | 1.1 | 对PUT方法的补充,用来对己知资源进行局部更新 |
| DELETE | 1.1 | 请求服务端删除指定资源 |
| CONNECT | 1.1 | 建立一个到服务端的隧道 |
| OPTIONS | 1.1 | 请求服务端返回对指定资源支持使用的请求方法 |
| TRACE | 1.1 | 追踪请求到达服务器中间经过的代理服务器 |
- 状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值
- 1xx:指示信息 ------ 表示请求已接收,继续处理
- 2xx:成功 ------ 表示请求已被成功接收、理解、接
- 3xx:重定向 ------ 要完成请求必须进行更进一步的操作
- 4xx:客户端错误 ------ 请求有语法错误或请求无法实现
- 5xx:服务器端错误 ------ 服务器未能实现合法的请求
- 常见状态代码、状态描述的说明如下:
- 200 OK:客户端请求成功
- 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
- 403 Forbidden:服务器收到请求,但是拒绝提供服务
- 404 Not Found:请求资源不存在,举个例子:输入了错误的URL
- 500 Internal Server Error:服务器发生不可预期的错误
- 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
HTTP协议请求的工作流程:

特点

1.3 www服务器的类型
静态网站
- 仅提供用户浏览的单向静态网页,单纯是由服务器单向提供数据给客户端,Server不需要与client端有互动,可以浏览网站,但是无法数据上传。
动态网站
- 该站可以让服务器与用户互动,常见的例如留言板,博客。这种类型的网站需要通过"网页程序语言"来实现与用户互动的行为。常见的例如:PHP网页程序语言,配合数据库系统来进行数据的读、写。当你在向服务器请求数据时,其实是通过服务器端同一个网页程序在负责将数据读出或写入数据库,变动的是数据库的内容,网页程序并没有任何改变。
- 另外一种交互式的动态网页主要是在客户端实现。服务端将可执行的程序代码(JavaScript)传送给客户端,客户端的浏览器如果提供JavaScript的功能,那么该程序就可以在客户端的计算机上面工作了;另外一种可在客户端执行的就是flash动画格式,在这种动画格式内还可以进行程序设计

2 使用nginx搭建web网站
2.1 nginx简介
nginx关键工作机制
- 抢占机制:当客户端发起请求时,会激活accept_mutex互斥锁,哪个worker抢占了该互斥锁,该客户端的请求就由那个worker响应和处理

- 异步非阻塞模式:在传统事件处理模式下,如果所有的worker被客户端阻塞后,新来的客户就需要等待,直到原来的客户端释放worker后才能被处理请求,在异步非阻塞模式下,底层使用了linux的epoll模型,就算worker被阻塞,新的客户端请求也会被正常处理

nginx正向代理功能
- 图:

nginx反向代理功能
- 图:

nginx负载均衡功能

2.2 部署Nginx
bash
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
[root@server ~]# yum install nginx -y
[root@server ~]# nginx -V # 查看版本,编译器、配置参数等信息
[root@server ~]# systemctl start nginx # 启动httpd
[root@server ~]# systemctl enable nginx # 设置开机启动
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
[root@server ~]# systemctl status nginx # 查看状态,q键退出查看
[root@server ~]# ps -ef | grep nginx # 查看进程
root 1690 1 0 13:57 ? 00:00:00 nginx: master process /usr/sbin/nginx
nginx 1691 1690 0 13:57 ? 00:00:00 nginx: worker process
nginx 1692 1690 0 13:57 ? 00:00:00 nginx: worker process
root 1726 1510 0 14:00 pts/0 00:00:00 grep --color=auto nginx
# 测试,Windows中打开浏览器输入服务器IP地址
2.3 常用命令
systemctl系列
bash
systemctl start nginx # 启动服务
systemcctl restart nginx # 重启服务
systemctl enable nginx # 开机启动
systemctl stop nginx # 停止服务
systemctl disable nginx # 取消开机启动
systemctl status nginx # 查看状态
nginx自带命令
bash
nginx # 启动nginx
nginx -s reload # 重新加载配置文件
nginx -s stop # 强行停止服务
nginx -s quit # 优雅停止服务,即所有请求处理完后退出服务
nginx -v # 查看版本号
nginx -t # 检查配置文件的语法错误,无错返回ok
2.4 主配置文件
bash
[root@server ~]# vim /etc/nginx/nginx.conf
结构

分析
- 层级结构图

- 配置分析
bash
# main配置段(全局配置)
user nginx; # 运行的账户,默认即是nginx,可以不进行设置
worker_processes auto; # worker进程数,根据硬件调整,通常等于CPU数量或者2倍于CPU
error_log /var/log/nginx/error.log; # 错误日志存放目录
pid /run/nginx.pid; # 指定运行Nginx master主进程的pid文件存放路径
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf; # 导入的外部文件位置
# events配置段,性能模块设置,其中可以设置时间处理模式等
events {
use epoll; # 使用epoll事件驱动模型,但不推荐配置它,让nginx自己选择
worker_connections 1024; # 每个进程的最大连接数量(并发数)
accept_mutex on # 默认是off关闭的,这里推荐打开
}
# http配置段,包含全局块和server块,使用最频繁的部分,代理、缓存、日志定义等绝大多数功能和第三方模块的配置都在这里设置
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 以上定义日志格式
access_log /var/log/nginx/access.log main; # 访问日志存储位置
sendfile on; # 高效文件传输模式,默认开启
tcp_nopush on; # 性能优化参数,数据是否立刻发送
tcp_nodelay on; # 性能优化参数,小数据包是否延迟发送
keepalive_timeout 65; # 超时时间
types_hash_max_size 4096; # 性能优化参数,影响散列表的冲率
include /etc/nginx/mime.types; # 可解析的静态资源类型
default_type application/octet-stream; # 默认文件类型
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf; # 加载子配置项
# server配置段,虚拟主机设置
server {
listen 80; # 监听IPV4端口
listen [::]:80; # 监听IPV6端口
server_name _; # 访问的域名
root /usr/share/nginx/html; # 网页默认目录
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf; # 子配置文件存储路径
# location配置段,一般用来匹配不同的URI请求
location / {
root /usr/share/nginx/html; # 相对路径网站根目录
alias /usr/share/nginx/html/; # 绝对路径网站根目录
index index.html index.htm; # 默认首页文件
deny 172.168.22.11; # 禁止访问的ip地址,可以为all
allow 172.168.33.44; # 允许访问的ip地址,可以为all
autoindex on; # 开启目录文件列表
autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes
autoindex_localtime on; # 显示的文件时间为文件的服务器时间
charset utf-8,gbk; # 避免中文乱码
auth_basic "xxxx"; # 加密网页验证时的提示信息
auth_basic_user_file /路径/文件名; # 加密网页使用的密码验证文件
}
error_page 404 /404.html; # 404时返回给客户端的页面
location = /40x.html {
}
error_page 500 502 503 504 /50x.html; # 50x错误返回给客户端的页面
location = /50x.html {
}
}
注意
-
root指令与alias指令区别
-
root指令用于静态资源目录位置,它可以写在 http 、 server 、 location 等配置中,root指令定义的路径会与 URI 叠加产生最终访问路径,如:
nginxlocation /image { root /opt/nginx/static; } # 当用户访问 www.test.com/image/1.png 时,实际在服务器找的路径是 /opt/nginx/static/image/1.png-
alias也是指定静态资源目录位置,但只能访问指定的绝对路径,不会叠加目录,只能写在 location 中且末尾一定要添加 / , 如:
nginxlocation /image { alias /opt/nginx/static/image/; } #当用户访问 www.test.com/image/1.png 时,实际在服务器找的路径是 /opt/nginx/static/image/1.png -
-
location匹配路径
-
格式:
nginxlocation [ = | ~ | ~* | ^~ ] uri { ... }-
匹配规则:
- = 精确匹配;
- ~ 正则匹配,区分大小写;
- ~* 正则匹配,不区分大小写;
- ^~ 匹配以某个字符串开头,不是正则匹配;
- / 通用匹配,如果没有其它匹配,任何请求都会匹配到
- 注:匹配优先级:= > ^~ > ~ > ~* > 不带任何字符。
-
nginx.conf 配置文件的语法规则
- 配置文件由指令与指令块构成
- 每条指令以 ";" 分号结尾,指令与参数间以空格符号分隔
- 指令块以 {} 大括号将多条指令组织在一起
- include 语句允许组合多个配置文件以提升可维护性
- 通过 # 符号添加注释,提高可读性
- 通过 $ 符号使用变量
- 部分指令的参数支持正则表达式,例如常用的 location 指令
2.6实验操作
实验1
- 快速搭建网站
bash
[root@server ~]# yum install nginx -y
echo "welcome to www.openlab.com" > /usr/share/nginx/html/index.html # 写入网页数据
[root@server ~]# systemctl restart nginx
# 打开windows中打开火狐浏览器输入主机IP测试
# 通过curl命令查看网站的网页数据,验证网站是否能访问
[root@server ~]# curl 127.0.0.1
welcome to www.openlab.com
实验2
- 替换网页目录
bash
[root@server ~]# yum install nginx -y
# 新建网页存储目录
[root@server ~]# mkdir -p /www/sxhkt # 网页存储目录不能放在/root下
# 使用xftp将windows端的sxhkt文件夹中的数据上传到Linux端的/www/sxhkt目录内
[root@server ~]# vim /etc/nginx/nginx.conf
# 定位第42行,修改如下:
root /www/sxhkt;
[root@server ~]# systemctl restart nginx # 重启服务
# 测试:打开windows端浏览器输入服务端IP地址
实验3
- 搭建密码验证功能来访问网站数据
- 第一步:准备工作
bash
# 恢复快照
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
[root@server ~]# yum install nginx httpd-tools -y
[root@server ~]# systemctl start nginx # 启动httpd
[root@server ~]# systemctl enable nginx # 设置开机启动
- 第二步:新建账户
bash
[root@server ~]# useradd t1
[root@server ~]# passwd t1
- 第三步:增加密码访问控制
bash
[root@server ~]# htpasswd -c /etc/nginx/passwd t1
New password: # 密码123456
Re-type new password:
Adding password for user t1
# htpasswd:生成密码数据的命令
# -c:表示第一次生成,会创建存储密码的文件,第二次创建密码时不能增加-c参数,否则会覆盖
# /etc/httpd/passwd : 存储访问网站的密码文件,passwd为文件名,名称可以自定
# t1:需要验证密码访问的账户名称
- 第四步:设置访问网站时需要验证密码
bash
[root@server ~]# mkdir /www
# 使用xftp将zy网页上传到/www
[root@server ~]# vim /etc/nginx/nginx.conf
server {
listen 80;
listen [::]:80;
root /www/zy;
autoindex on; # 开启目录访问列表
auth_basic "Please input password";
auth_basic_user_file /etc/nginx/passwd;
[root@server ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
- 第九步:重启服务,测试
bash
[root@server ~]# systemctl restart nginx
# windows打开浏览器输入192.168.48.130时有验证密码的对话框弹出,输入密码验证访问

实验4
- 新建文件目录列表的网站,用于下载数据
- 第一步:安装nginx
bash
# 恢复快照
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
[root@server ~]# yum install nginx -y
[root@server ~]# systemctl start nginx # 启动httpd
[root@server ~]# systemctl enable nginx # 设置开机启动
- 第二步:配置文件
bash
[root@server ~]# vim /etc/nginx/nginx.conf
server {
listen 80;
listen [::]:80;
root /vat/log; # 选择一个开放的目录用于查看并下载
autoindex on; # 开启目录访问列表
- 第三步:重启服务测试
bash
[root@server ~]# systemctl restart nginx
3 虚拟主机功能
3.1 概述
-
如果每台运行 Linux 系统的服务器上只能运行一个网站,那么人气低、流量小的草根站长就要被迫承担着高昂的服务器租赁费用了,这显然也会造成硬件资源的浪费。在虚拟专用服务器(Virtual Private Sever,VPS)与云计算技术诞生以前,IDC 服务供应商为了能够更充分地利用服务器资源,同时也为了降低购买门槛,于是纷纷启用了虚拟主机功能
-
利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个"虚拟的服务器"。但是,该技术无法实现目前云主机技术的硬件资源隔离
-
nginx务器基于用户请求的不同 IP 地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术,也就是说用户请求的方式不同,最终获取到的网页内容也各不相同
3.2 基于 IP 地址的虚拟主机
原理
- 如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,当用户请求的IP地址不同,则会访问到不同网页,且每个网站都有一个独立的IP地址。(常用)
- 注意:主机必须有多个IP地址
实验6
- 增加多个IP地址,实现基于不同IP地址的虚拟主机功能
- 第一步:准备工作
bash
# 恢复快照
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
[root@server ~]# yum install nginx -y
[root@server ~]# systemctl start nginx # 启动httpd
[root@server ~]# systemctl enable nginx # 设置开机启动
bash
# 给网卡增加2个IP地址
[root@server ~]# nmcli c modify ens32 +ipv4.addresses 192.168.58.110/24
[root@server ~]# nmcli c modify ens32 +ipv4.addresses 192.168.58.120/24
[root@server ~]# nmcli c reload
[root@server ~]# nmcli c up ens32
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
- 第二步:新建2个存储网页的目录,写入网页文件
bash
[root@server ~]# mkdir -p /www/ip110
[root@server ~]# mkdir -p /www/ip120
[root@server ~]# echo "ip110" > /www/ip110/index.html
[root@server ~]# echo "ip120" > /www/ip120/index.html
- 第三步:修改配置文件,建立基于IP地址的虚拟主机
bash
# 在/etc/nginx/conf.d目录下建立子配置文件实现,更加精简,执行时会被主配置文件加载
[root@server ~]# vim /etc/nginx/conf.d/vshost.conf # 添加以下内容
server {
listen 80;
server_name 192.168.58.110;
root /www/ip110;
}
server {
listen 80;
server_name 192.168.58.120;
root /www/ip120;
}
- 第四步,重启服务,测试
bash
[root@server ~]# nginx -t
[root@server ~]# systemctl restart nginx # 重启服务
[root@server ~]# curl 192.168.58.110 # 测试网页
ip110
[root@server ~]# curl 192.168.58.120
ip120
3.3 基于端口号的虚拟主机
原理
- 基于端口号的虚拟主机功能,可以让用户通过一个IP地址的不同端口号来访问不同的网站
实验7
- 基于不同端口的虚拟主机
- 第一步:准备工作
bash
# 恢复快照
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
[root@server ~]# yum install nginx -y
[root@server ~]# systemctl start nginx # 启动httpd
[root@server ~]# systemctl enable nginx # 设置开机启动
- 第二步:新建2个存储于网页的目录,使用xftp将网页文件上传
bash
[root@server ~]# mkdir -p /www/port{5111,5222} # 一条语句合并建立目录
[root@server ~]# ls /www
port5111 port5222
# 使用xftp将2个网页文件sxhkt及zy上传到上述目录
- 第三步:编辑主配置文件
bash
# 可直接在主配置文件中修改
[root@server ~]# vim /etc/nginx/nginx.conf
server {
listen 5111;
server_name _;
root /www/port5111;
}
server {
listen 5222;
server_name _;
root /www/port5222;
}
- 第四步:重启服务,测试
bash
[root@server ~]# systemctl restart nginx # 重启服务
# 打开windows的浏览器输入192.168.58.100:5111或者192.168.58.100:5222进行测试
3.4 基于域名的虚拟主机
原理
- 当服务器无法给每个网站都分配一个独立的IP地址时,可以通过用户请求的域名不同实现传输不同的网页数据
实验8
- 使用2个域名建立虚拟主机网站
- 第一步:准备工作
bash
# 恢复快照
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
[root@server ~]# yum install nginx -y
[root@server ~]# systemctl start nginx # 启动nginx
[root@server ~]# systemctl enable nginx # 设置开机启动
- 第二步:新建2个存储网页文件的目录,使用xftp将网站文件上传
bash
[root@server ~]# mkdir -p /www/lx1
[root@server ~]# mkdir -p /www/lx2
- 第三步:手动配置IP地址与域名的映射关系
bash
# Linux端
[root@server ~]# vim /etc/hosts
# 添加如下内容:
192.168.58.100 www.lx1.com
192.168.58.100 www.lx2.com
# windows端,打开:
C:\Windows\System32\drivers\etc\hosts文件,添加如下内容:
192.168.58.100 www.lx1.com
192.168.58.100 www.lx2.com
- 第四步:编辑主配置文件
bash
[root@server ~]# vim /etc/nginx/nginx.conf
server {
listen 80;
server_name www.lx1.com; # 重点,需要写域名
root /www/lx1;
}
server {
listen 80;
server_name www.lx2.com;
root /www/lx2;
}
- 第五步:重启服务,测试
bash
[root@server ~]# systemctl restart nginx # 重启服务
# windows端打开浏览器输入域名测试
4 基于https协议的静态网站
4.1 使用nginx的http_ssl模块建立加密认证网站
查看
bash
[root@server ~]# nginx -V
# 看是否有--with-http_ssl_module模块,否则需要安装mod_ssl
配置文件:
- 证书文件:/....../xxxx.crt
- 私钥文件:/....../xxxx.key
ssl配置文件的主要参数
bash
[root@server ~]# vim /etc/nginx/nginx.conf # 主配置文https段,默认为注释,可以取消注释
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2; # 监听443端口
# listen [::]:443 ssl http2;
# server_name _; # 域名
# root /usr/share/nginx/html; # 网页默认
#
# ssl_certificate "/etc/pki/nginx/server.crt"; # 证书路径
# ssl_certificate_key "/etc/pki/nginx/private/server.key"; # 私钥文件路径
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers PROFILE=SYSTEM;
# ssl_prefer_server_ciphers on;
#
# # 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 {
# }
# }
实验1
- 搭建nginx+ssl的加密认证web服务器
- 第一步:准备工作
bash
# 恢复快照
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
[root@server ~]# yum install nginx mod_ssl -y
[root@server ~]# systemctl start nginx # 启动
[root@server ~]# systemctl enable nginx # 设置开机启动
- 第二步:新建存储网站数据文件的目录
bash
[root@server ~]# mkdir -p /www/zy
# 私用xftp将windows的zy网站数据文件上传到/www/zy目录中
- 第三步:制作证书
bash
# 生成证书和私钥
[root@server ~]# openssl req -x509 -newkey rsa:2048 -keyout /etc/nginx/zy.key -nodes -days 365 -out /etc/nginx/zy.crt
- 第五步:修改配置文件
bash
[[root@server nginx]# cd ~
[root@server ~]# vim /etc/nginx/nginx.conf
server {
listen 443 ssl http2;
server_name www.zy.com;
root /www/zy;
ssl_certificate /etc/nginx/zy.crt;
ssl_certificate_key /etc/nginx/zy.key;
}
server { # 输入http跳转到https
listen 80;
server_name www.zy.com;
return 301 https://www.zy.com;
}
- 第六步:重启服务
bash
[root@server nginx]# cd ~
[root@server ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@server nginx]# systemctl start nginx
- 第七步:测试
bash
# 在windows端打开浏览器,输入https://192.168.48.130,点击高级->接受风险并继续

实验2
- 组建多个子目录网站www.openlab.com,该网站有2个子目录www.openlab.com/file和www.openlab.com/ftp,要求:
- file数据使用http读取
- ftp数据使用https读取
- 第一步:准备工作
bash
# 恢复快照
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
[root@server ~]# yum install nginx -y
[root@server ~]# systemctl start nginx # 启动nginx
[root@server ~]# systemctl enable nginx # 设置开机启动
- 第二步:新建网页目录并建立网页
bash
[root@server ~]# mkdir -p /www/file
[root@server ~]# mkdir -p /www/ftp
[root@server ~]# echo "file" > /www/file/index.html # 写入网站数据
[root@server ~]# echo "ftp" > /www/ftp/index.html
- 第三步:建立本地hosts域名映射
bash
[root@server ~]# vim /etc/hosts # 添加如下内容
192.168.48.130 www.openlab.com
- 第四步:建立file网站
bash
[root@server ~]# vim /etc/nginx/nginx.conf
server {
listen 80;
server_name www.openlab.com;
location /file {
alias /www/file/;
index index.html index.htm;
}
}
- 第五步:建立https的ftp网站
bash
# 制作证书
[root@server ~]# openssl req -x509 -newkey rsa:2048 -keyout /etc/nginx/openlab.key -nodes -days 365 -out /etc/nginx/openlab.crt
# 注意:下列证书信息项目,在面试时常问
Country Name (2 letter code) [AU]:86 # 国家代码
State or Province Name (full name) [Some-State]:shanxi # 省份
Locality Name (eg, city) []:xi'an # 城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:openlab# 公司
Organizational Unit Name (eg, section) []:RHCE # 部门
Common Name (e.g. server FQDN or YOUR name) []:server # 主机名
Email Address []:andy@qq.com # 邮箱
[root@server ~]# vim /etc/nginx/nginx.conf # 编辑配置文件
server {
listen 443 ssl http2;
server_name www.openlab.com;
location /ftp {
alias /www/ftp;
index index.html index.htm;
}
ssl_certificate "/etc/nginx/ftp.crt";
ssl_certificate_key "/etc/nginx/ftp.key";
}
- 第六步:重启服务
bash
[root@server ~]# systemctl restart nginx
- 第七步:测试
bash
# 输入www.openlab.com/file
# 输入https://www.openlab.com/ftp,点击高级->接受风险并继续
5 项目:使用LNMP搭建私有云存储
5.1 准备工作
恢复快照,关闭安全软件
bash
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
5.2 搭建LNMP环境
bash
[root@server ~]# yum install nginx mariadb-server php* -y
上传软件
- 使用xftp将nextcloud-25.0.1.zip软件压缩包上传到Linux的根目录,并解压缩
bash
[root@server ~]# cd /
[root@server /]# unzip /nextcloud-25.0.1.zip
设置nextcloud安装命令权限
bash
[root@server /]# chmod -Rf 777 /nextcloud
设置数据库
bash
[root@server /]# systemctl start mariadb # 启动数据库
[root@server /]# mysql
# 数据库设置
MariaDB [(none)]> create database nextcloud; # 创建数据库
MariaDB [(none)]> create user 'nextcloud'@'localhost' identified by '123456'; # 创建用户及密码
MariaDB [(none)]> grant all on nextcloud.* to 'nextcloud'@'localhost';
# 设置权限
MariaDB [(none)]> exit # 退出
重启数据库
bash
[root@server /]# systemctl restart mariadb
配置nginx
bash
[root@server /]# vim /etc/nginx/nginx.conf
server {
listen 80;
server_name 192.168.58.100;
root /nextcloud;
}
重启httpd服务
bash
[root@server /]# systemctl start nginx
安装
-
打开浏览器后输入服务器IP地址,进入nextcloud安装向导
-
管理员的用户名即密码自定
-
存储与数据库:选择MySQL/MariaDB,设置数据库用户为nextcloud,密码:123456,数据库名:nextcloud,主机名:localhost
cloud-25.0.1.zip设置nextcloud安装命令权限
bash[root@server /]# chmod -Rf 777 /nextcloud
设置数据库
bash
[root@server /]# systemctl start mariadb # 启动数据库
[root@server /]# mysql
# 数据库设置
MariaDB [(none)]> create database nextcloud; # 创建数据库
MariaDB [(none)]> create user 'nextcloud'@'localhost' identified by '123456'; # 创建用户及密码
MariaDB [(none)]> grant all on nextcloud.* to 'nextcloud'@'localhost';
# 设置权限
MariaDB [(none)]> exit # 退出
重启数据库
bash
[root@server /]# systemctl restart mariadb
配置nginx
bash
[root@server /]# vim /etc/nginx/nginx.conf
server {
listen 80;
server_name 192.168.58.100;
root /nextcloud;
}
重启httpd服务
bash
[root@server /]# systemctl start nginx
安装
- 打开浏览器后输入服务器IP地址,进入nextcloud安装向导
- 管理员的用户名即密码自定
- 存储与数据库:选择MySQL/MariaDB,设置数据库用户为nextcloud,密码:123456,数据库名:nextcloud,主机名:localhost