使用nginx搭建web网站
概念

特点

nginx架构

- 注意:默认情况下,nginx会建立和服务器CPU核心数相等的worker进程,woker进程之间相互独立,若一个进程故障不会影响其它进程
nginx正向代理功能
- 图:

-
分析:它的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我,从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。
nginx反向代理功能
-
图:

- 分析:反向代理正好相反,它也是在客户端和服务器端的一个代理服务器,但是这个代理服务器的目的是用来保护服务器端的,当外网客户端来访问我们的服务器时为了避免暴露应用服务器的实际ip地址,我们会让客端访问代理服务器,然后代理服务器再根据客户端的请求去实际的应用服务器获取响应内容并返回客户端
nginx负载均衡功能

部署Nginx
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 #### 常用命令 ##### systemctl系列 systemctl start nginx # 启动服务 systemcctl restart nginx # 重启服务 systemctl enable nginx # 开机启动 systemctl status nginx # 查看状态 ##### nginx自带命令 nginx # 启动nginx nginx restart # 重启服务 nginx -V # 查看版本号 nginx -t # 检查配置文件的语法错误,无错返回ok 网页默认目录:/usr/share/nginx/html 访问日志:/var/log/nginx/access.log 错误日志:/var/log/nginx/error.log #### 主配置文件 \[root@server \~\]# vim /etc/nginx/nginx.conf ## 实验操作 ##### 实验1:快速搭建网站   ##### 实验2:替换网页目录 # 新建网页存储目录 \[root@server \~\]# mkdir -p /www/sczl # 网页存储目录不能放在/root下 # 使用xftp将windows端的sczl文件夹中的数据上传到Linux端的/www/sczl目录内 \[root@server \~\]# vim /etc/nginx/nginx.conf # 定位第42行,修改如下: root /www/sczl; \[root@server \~\]# systemctl restart nginx # 重启服务 # 测试:打开windows端浏览器输入服务端IP地址 ##### 实验3:搭建密码验证功能来访问网站数据 第一步:准备工作 \[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 # 设置开机启动 *** ** * ** *** 第二步:新建账户  第三步:增加密码访问控制   第四步:设置访问网站时需要验证密码 \[root@server \~\]# mkdir /www # 使用xftp将zy网页上传到/www \[root@server \~\]# vim /etc/nginx/nginx.conf server { listen 80; listen \[::\]:80; root /www/zy; auth_basic "Please input password"; auth_basic_user_file /etc/nginx/passwd; } \[root@server \~\]# nginx -t  ##### 实验5:搭建显示目录列表的网站,用于下载数据 第一步:创建用于查看的目录列表  第二步:配置文件  autoindex on; # 开启目录文件列表 autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes autoindex_localtime on; # 显示的文件时间为文件的服务器时间 第三步:重启服务测试  ##### 实验6nginx负载均衡 环境准备:至少 3 台 Linux 服务器 * 1 台作为 **Nginx 负载均衡器(LB)** * 2 台作为 **后端应用服务器(Web/APP)** 第一步:所有主机安装nginx yum install nginx -y 第二步:后端2台主机部署网站 ```bash # node1操作 [root@node1 ~]# mkdir -p /www/test [root@node1 ~]# echo "第一台机子,192.168.88.131" > /www/test/index.html [root@node1 ~]# vim /etc/nginx/nginx.conf root /www/test; [root@node1 ~]# systemctl enable --now nginx ``` ```bash # node2操作 [root@node2 ~]# mkdir -p /www/test [root@node2 ~]# echo "第二台机子,192.168.88.132." > /www/test/index.html [root@node2 ~]# vim /etc/nginx/nginx.conf root /www/test; [root@node2 ~]# systemctl enable --now nginx ``` 第三步:配置 Nginx 负载均衡器(核心步骤)  第四步:使用Windows作为客户机访问负载均衡服务器  ## **基于 IP 地址的虚拟主机** 虚拟主机的本身就是共享,通过多个网站共享一台物理硬件,使用不同的技术来区分之间的差别 ##### **原理** * **如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,当用户请求的IP地址不同,则会访问到不同网页,且每个网站都有一个独立的IP地址。(常用)** * **注意:主机必须有多个IP地址** ##### 实验7 增加多个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.48.150/24 [root@server ~]# nmcli c modify ens32 +ipv4.addresses 192.168.48.151/24 [root@server ~]# nmcli c reload [root@server ~]# nmcli c up ens32 ``` 第二步:新建2个存储网页的目录,写入网页文件  第三步:修改配置文件,建立基于IP地址的虚拟主机  第四步:测试输入不同ip,则访问的是不同主页 ## 基于端口号的虚拟主机  这个路径是用于加载主配置文件的路径,避免主配置文件过于繁杂,可以将要配置的内容写在、etc/nginx/conf.d 的目录下,文件名任意但是后缀必须是.conf 也可以自定义路径,但是就需要在主配置文件里也改掉这个路径即可。   ```cpp server { listen 81; server_name _; root /www/sczl; } server { listen 82; server_name _; root /www/zy; } ``` 第四步:重启服务,测试 ```cpp cd /etc/nginx/conf.d/ ``` ```cpp [root@server ~]# systemctl restart nginx # 重启服务 # 打开windows的浏览器输入192.168.48.150:81或者192.168.48.150:82进行测试 ``` ##### 实验8:使用2个域名建立虚拟主机网站 第一步:新建2个存储网页文件的目录,使用xftp将网站文件上传 ```cpp [root@server ~]# mkdir -p /www/zy [root@server ~]# mkdir -p /www/sczl ``` 第二步:手动配置IP地址与域名的映射关系 Linux的本地域名解析地址在 /etc/hosts ```cpp vim /etc/hosts # 添加如下内容: ```  第四步:编辑配置文件 也可以直接编辑主配置文件 \[root@server \~\]# vim /etc/nginx/nginx.conf 或者如下 ```cpp cd /etc/nginx/conf.d/ ``` ```cpp vim virt_hosts.conf ```  第五步:重启服务,测试 ```cpp [root@server ~]# systemctl restart nginx # 重启服务 # windows端打开浏览器输入域名测试 ```