使用nginx搭建web网站

概念
  • image-20231115152245344

特点

image-20231115152403622

nginx架构

image-20231115152431781

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

nginx正向代理功能

  • 图:

image-20231116085553280

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

    nginx反向代理功能

  • 图:

  • image-20231116090321087

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

nginx负载均衡功能

image-20231115154752392

部署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

image-20230531144538121

实验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台主机部署网站

# 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
# 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地址的虚拟主机功能

第一步:准备工作

# 恢复快照
[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个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

也可以自定义路径,但是就需要在主配置文件里也改掉这个路径即可。

server {
          listen   81;
          server_name  _;
          root      /www/sczl;
}

server {
          listen   82;
          server_name  _;
          root      /www/zy;
}

第四步:重启服务,测试

cd /etc/nginx/conf.d/
[root@server ~]# systemctl restart nginx   # 重启服务

# 打开windows的浏览器输入192.168.48.150:81或者192.168.48.150:82进行测试
实验8:使用2个域名建立虚拟主机网站

第一步:新建2个存储网页文件的目录,使用xftp将网站文件上传

[root@server ~]# mkdir  -p  /www/zy
[root@server ~]# mkdir  -p  /www/sczl

第二步:手动配置IP地址与域名的映射关系

Linux的本地域名解析地址在 /etc/hosts

vim /etc/hosts
# 添加如下内容:

第四步:编辑配置文件

也可以直接编辑主配置文件

[root@server ~]# vim  /etc/nginx/nginx.conf 

或者如下

cd /etc/nginx/conf.d/
vim virt_hosts.conf 

第五步:重启服务,测试

[root@server ~]# systemctl restart nginx   # 重启服务

# windows端打开浏览器输入域名测试

    Logo

    openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

    更多推荐