笔记:在同一个物理服务器上通过nginx的虚拟主机生成多个不同的web站点

主程序二进制文件

/usr/sbin/nginx

配置文件相关

  1. 主配置文件:/etc/nginx/nginx.conf
  2. 站点子配置目录(默认自带,无需手动创建):/etc/nginx/conf.d/
  3. 模块附加配置目录:/etc/nginx/modules/
  4. MIME 类型映射文件:/etc/nginx/mime.types

网页站点根目录

默认网站根目录:/usr/share/nginx/html/ 内含默认首页 index.html、50x 错误静态页面

日志目录

  1. 访问日志:/var/log/nginx/access.log
  2. 错误日志:/var/log/nginx/error.log

PID 进程文件

/run/nginx.pid

缓存 / 临时目录

客户端缓存、临时文件存放:/var/lib/nginx/tmp/

系统服务文件(systemd 管理)

/usr/lib/systemd/system/nginx.service

1.基于多IP的web服务器配置

基于自己实际操作

1)切换到自己新建的会话(可选)

这里我切换为了test_ens1

2)为该网卡添加ip地址

添加完成后重新激活网卡生效

3)测试访问

修改网站默认首页文件内容

访问

三个ip都可以访问

编辑配置文件

dnf安装的文件路径

  1. /etc/nginx/nginx.conf 主配置文件
  2. /etc/nginx/conf.d 配置文件目录,该目录下保存的所有的 .conf 结尾的文件都会在服务启动的时候被使用

查看主配置文件

bash 复制代码
# 指定Nginx运行用户为nginx,不使用root运行提升安全
user nginx;
# 自动根据CPU核心数设置工作进程数量
worker_processes auto;
# 错误日志存放路径,日志级别为warn
error_log /var/log/nginx/error.log warn;
# 进程pid文件存放位置
pid /run/nginx.pid;

# 加载系统自带的Nginx动态模块
include /usr/share/nginx/modules/*.conf;

# 事件模块配置,控制网络连接相关参数
events {
    # 单个工作进程最大并发连接数
    worker_connections 1024;
}

# HTTP服务全局配置块,所有网站共用
http {
    # 定义名为main的访问日志输出格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    # 访问日志文件路径,使用上面定义的main格式记录
    access_log  /var/log/nginx/access.log  main;

    # 开启高效文件传输
    sendfile            on;
    # 减少网络报文段数量,配合sendfile使用
    tcp_nopush          on;
    # 关闭长连接延迟发送,提升响应速度
    tcp_nodelay         on;
    # HTTP长连接超时时间,单位秒
    keepalive_timeout   65;
    # 扩展类型哈希表最大值,提升文件类型匹配性能
    types_hash_max_size 4096;

    # 引入文件后缀与MIME类型映射配置
    include             /etc/nginx/mime.types;
    # 默认文件响应类型,无法匹配mime时使用
    default_type        application/octet-stream;

    # 核心语句:加载conf.d目录下所有.conf站点配置文件
    include /etc/nginx/conf.d/*.conf;

    # 默认兜底服务,未匹配到其他server_name时访问此站点
    server {
        # 监听IPv4的80端口,设为默认站点
        listen       80 default_server;
        # 监听IPv6的80端口,设为默认站点
        listen       [::]:80 default_server;
        # 匹配所有未定义的域名
        server_name  _;
        # 网站静态文件根目录
        root         /usr/share/nginx/html;

        # 根路径访问规则
        location / {
            # 默认首页文件优先级
            index index.html index.htm;
        }
    }
}

2.Nginx 的虚拟主机配置块

进入 Nginx 子配置目录,创建 IP 站点配置文件

编写 IP 型虚拟主机 server 配置块

  • server { } 承载单个网站的虚拟主机配置块,所有该站点规则写在大括号内。

  • server_name 192.168.143.101; 指定站点匹配标识,客户端用 192.168.143.101 访问时,匹配此站点;末尾分号为语法必需。

  • root /www/101; 定义该网站页面、静态文件存放的本地根目录;访问网站资源时,Nginx 会从 /www/101 下寻找对应文件。

创建站点网页根目录并生成首页文件

3.临时关闭 SELinux 安全拦截

setenforce 0

临时把 SELinux 安全模块设为宽容模式

4.查看结果

虚拟主机部署验证成功

另一个IP练习

重启nginx服务后访问

为什么可以不写index字段

在主配置文件中的配置在所有 server{} 虚拟主机都会继承

  1. location / { index index.html index.htm; }
  • location /:匹配网站所有根路径访问;
  • index index.html index.htm;:访问目录时,优先自动打开 index.html,找不到就尝试 index.htm

自定义首页文件名

3.基于多端口的web服务器部署

编写 9090 /9091端口 Nginx 虚拟主机配置

文件详细内容

创建多端口站点网页根目录

重启 Nginx 并浏览器访问 9090 //9091端口验证

4.基于多主机名web服务器配置

1)编写域名虚拟主机配置文件

2)编写站点首页文件内容

3)修改本机 hosts 文件,绑定域名与服务器 IP

在/etc/hosts中加入

192.168.143.101 www.haha.com

测试

能ping通

相关推荐
double_eggm19 小时前
uniapp.3
开发语言·前端·javascript
索西引擎20 小时前
【React】状态提升模式:设计原理、权衡分析与架构决策框架
前端·react.js·架构
2501_9327502620 小时前
Android 数据持久化解析
android·java
NWU_LK21 小时前
【WebFlux】第三篇 —— 常用操作符与数据流转换
java
胡萝卜术1 天前
力扣5. 最长回文子串
前端·javascript·面试
我星期八休息1 天前
网络编程—应用层HTTP协议
linux·运维·开发语言·前端·网络·网络协议·http
Mr__Miss1 天前
Java泛型完全指南:从入门到精通
java·开发语言·python
不好听6131 天前
前端路由完全指南(下篇):懒加载、History 栈与工程化实践
前端·react.js
jinyishu_1 天前
模拟实现 C++ 栈和队列——从适配器模式看懂 STL 容器之美
java·c++·适配器模式