Nginx实现多虚拟主机配置

news2025/1/26 15:54:09

Nginx实现多虚拟主机配置

Nginx为什么要进行多虚拟主机配置呢?what?
Nginx实现多虚拟主机配置的主要原因是,一个服务器可能会承载多个网站或应用程序,这些网站或应用程序需要使用不同的域名或IP地址来进行访问。如果只有一个虚拟主机配置,只能处理一个域名或IP地址的请求,无法满足多个网站或应用程序的需求。

通过实现多虚拟主机配置,可以使得Nginx能够处理多个域名或IP地址的请求,每个虚拟主机配置都可以有不同的配置信息,例如根目录、日志文件、SSL证书等,从而能够为不同的网站或应用程序提供定制化的服务。

此外,通过使用Nginx作为反向代理服务器,可以将多个应用程序部署在同一台服务器上,并通过不同的虚拟主机配置进行访问,从而提高服务器的利用率和性能。

那就首先来看一下Nginx的配置文件:

worker_processes  1;  #全局指令,在整个nginx中有效
events {
    worker_connections  1024; #括号内为局部指令,只对当前括号内的内容有效
}
#user  nobody;         #nginx启动用户
worker_processes  1;   #nginx工作进程数

#error_log  logs/error.log  info;   #nginx错误日志记录位置

#pid        logs/nginx.pid;         #nginx进程日志记录位置


events {                            #nginx工作进程配置
    use epoll;                      #使用epoll的I/O 模型  
    worker_connections 20000;	    #工作进程的最大连接数量
    client_header_buffer_size 4k;   #客户端请求头部的缓冲区大小
    open_file_cache max=2000 inactive=60s; #为打开文件指定缓存,默认是没有启用的,max指定缓存最大数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存 
    open_file_cache_valid 60s;             #这个是指多长时间检查一次缓存的有效信息。
    open_file_cache_min_uses 1;            #open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如果有一个文件在inactive时间内一次没被使用,它将被移除。

}


http {
    include       mime.types;                  #引入其他文件
    default_type  application/octet-stream;    #默认文件类型,默认为text/plain

	#指定日志格式
    #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  logs/access.log  main;

    sendfile        on;  #开启高效文件传输
    #tcp_nopush     on;  #用来提升网络包的传输'效率',sendfile开启才可开启

    #keepalive_timeout  0;
    keepalive_timeout  65;  #连接保持时间

    #gzip  on;             #文件压缩模式

    server {			  #一个服务模块
        listen       80;   #占用端口号
        server_name  localhost; #虚拟服务器的识别标志

        #charset koi8-r;    #设置编码集

		#该服务模块的日志位置
        #access_log  logs/host.access.log  main;
        
		#请求路径匹配
        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html; #错误页面展示
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

多虚拟机配置

基于多端口的虚拟主机配置
  1. 修改nginx配置文件
[root@localhost /]# vi /tmp/tngx/conf/nginx.conf  

#在配置文件添加如下信息

   #添加一个server模块,表示nginx启动之后占用两个端口分别为9999和80
    server {
        listen    9999;
        charset utf-8;
            location /{
                root /baihzi;
            }

    }
    server {
        listen      80;
            server_name  localhost;
            location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        	root   html;
        }
    }
  1. 重启nginx
[root@localhost /]# /tmp/tngx/sbin/nginx -s reload
#访问测试

基于多ip的虚拟主机配置

  1. 为主机添加vip(详细介绍可以看本人另一篇mycat快速搭建)

在这里插入图片描述

  1. 修改配置文件
server {
    listen    192.168.157.101:80;
    charset utf-8;
    location /{
    	root /baihzi;
    }
}
server {
    listen      192.168.157.111:80;
    server_name  localhost;
    location / {
        root   html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
		root   html;
	}
}
  1. 重启nginx
[root@localhost /]# /tmp/tngx/sbin/nginx -s reload
  1. 访问nginx

多虚拟主机的日志配置

  1. 修改配置文件
server {
    listen    192.168.157.101:80;
	access_log  logs/zhangsan/access.log #仅对当前服务生效的日志配置
    charset utf-8;
    location /{
    	root /baihzi;
    }
}
server {
    listen      192.168.157.111:80;
    server_name  localhost;
    access_log  logs/lisi/access.log #仅对当前服务生效的日志配置
    location / {
        root   html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
		root   html;
	}
}
  1. 重启nginx
[root@localhost lisi]# /tmp/tngx/sbin/nginx -s reload

再补充一下比较常用的nginx.conf的配置

静态资源压缩

#配置文件中开启如下参数
	gzip on;
	gzip_http_version 1.1;
	gzip_comp_level 4;
	gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

目录浏览

location / {
    root /shuaihui;
    # index index.html   #默认访问网页,必须没有此配置,并且指定目录中也不能有index.html
    autoindex on; #添加此内容
}

状态页配置

nginx提供的状态查询模块,用于检测nginx当前状态

该功能需要在编译nginx时添加–with-http-stud-status_module才能使用

在配置文件中添加如下配置

server{
    listen 85; #监听85端口
    location / {
        stub_status on; #开启状态页
        access_log off; #关闭日志 
    }
}

location匹配机制

根据用户请求的地址,进行不同的处理

location的不相同写法
location [=|~*|^~] url {
    相应的处理
}

匹配符  匹配规则            优先级(数值越小优先级越高)
 =     精确匹配				 1
 ^~    以某开头,不支持正则	 2 
 ~*    支持正则				 3
 空    路径匹配       		4
 /     通配				  5
#案例
server {
    listen 83;
    location / {
        return 401;
    }
    location = /zhangsan {
        return 402;
    }
    location /lisi/ {
        return 403;
    }
    location ^~ /wangwu/ {
        return 404;
    }
    location ~* \.(gif|jpg|jpeg)$ {
        return 500;
    }
    
    
    
}

URL重写

将用户请求的路径再次跳转到指定路径

#语法    rewrite  用户请求路径  跳转路径  匹配规则

server {
    listen 90;
    server_name _;
    location / {
        rewrite ^/(.*) http://www.baidu.com/$1 permanent;
    }
}

rewrite结尾参数如下:

  1. last 匹配完成后,继续向下匹配
  2. break 匹配完成后,不再匹配
  3. redirct 临时重定向,浏览器展示跳转之后的url,爬虫不会更新
  4. permanent 永久重定向,浏览器展示跳转之后的url,爬虫会会更新

Nginx访问认证

nginx提供访问认证,用户访问时需做登陆验证

#使用linux生成验证文件
[root@localhost /]# yum install -y httpd-tools #下载http工具包

[root@localhost /]# htpasswd -bc 文件位置  用户名 密码
#修改nginx配置
server {
    listen 95;
    server_name _;
    location / {
        root /shuaihui;
        auth_basic "test auth";
        auth_basic_user_file 上面生成的文件位置;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1279183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录第二十二天(一刷C语言)|组合总数电话号码的字母组合

创作目的:为了方便自己后续复习重点,以及养成写博客的习惯。 一、组合总数 思路:参考carl文档和视频 1、需要一维数组path来存放符合条件的结果,二维数组result来存放结果集。 2、targetSum 目标和,也就是题目中的…

Java基础-----Date类及其相关类(一)

文章目录 1. Date类1.1 简介1.2 构造方法1.3 主要方法 2. DateFormat 类2.1 简介2.2 实例化方式一:通过静态方法的调用2.2 实例化方式二:通过创建子类对象 3. Calendar类4. GregorianCalendar 1. Date类 1.1 简介 java.util.Date:表示指定的时间信息&a…

市面上的AR眼镜:优缺点分析

AR眼镜是近年来备受关注的科技产品之一。它通过将虚拟信息叠加到现实世界中,为用户提供全新的视觉体验。目前,市面上的AR眼镜主要分为两类:消费级AR眼镜和企业级AR眼镜。 消费级AR眼镜 消费级AR眼镜的特点是轻便、时尚、易于佩戴&#xff0…

DOM 事件的注册和移除

前端面试大全DOM 事件的注册和移除 🌟经典真题 🌟DOM 注册事件 HTML 元素中注册事件 DOM0 级方式注册事件 DOM2 级方式注册事件 🌟DOM 移除事件 🌟真题解答 🌟总结 🌟经典真题 总结一下 DOM 中如何…

【STM32】TIM定时器

第一部分:定时器基本定时的功能; 第二部分:定时器的输出比较功能; 第三部分:定时器输入捕获的功能; 第四部分:定时器的编码接口。 1 TIM简介 TIM(Timer)定时器&#…

计算机网络TCP篇②

一、TCP 重传、滑动窗口、流量控制、拥塞控制 1.1、重传机制 在 TCP 中,当发送端的数据达到接受主机时,接收端主机会返回一个确认应答消息,表示已收到消息。但是在复杂的网络中,并一定能顺利正常的进行数据传输,&…

从零开始搭建博客网站-----登陆页面

登录按钮以及背景图设置 安装element-plus和css插件 npm install element-plus --save npm install sass --save npm install sass-loader --save在main.js里引用 寻找背景图存入assets文件下,并且在Login.vue里设置背景图和登录按钮 设置的背景图的大小没有起…

avue-tabs设置默认选中的tab

文章目录 一、问题二、解决三、最后 一、问题 最近在用avue这个UI框架来开发页面,有用到avue-tabs这个tab切换组件。结果竟然发现element-ui中el-tabs的v-model在avue-tabs中竟然是没有用的,无法设置默认选中哪个tab。avue这个基于element-ui开发的UI框…

〖大前端 - 基础入门三大核心之JS篇㊹〗- DOM事件委托

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

【Erlang进阶学习】2、匿名函数

受到其它一些函数式编程开发语言的影响,在Erlang语言中,将函数作为一个对象,赋予其“变量”的属性,即为我们的匿名函数 或 简称 fun,它具有以下特性: (匿名函数:不是定义在Erlang模…

逻辑回归与正则化 逻辑回归、激活函数及其代价函数

逻辑回归、激活函数及其代价函数 线性回归的可行性 对分类算法,其输出结果y只有两种结果{0,1},分别表示负类和正类,代表没有目标和有目标。 在这种情况下,如果用传统的方法以线性拟合 ( h θ ( x ) θ T…

Android HCI日志分析案例2

案例1--蓝牙音箱电量用完后,配对一直失败,提示PIN码不正确 基于MTK平台,通过MTKLogger开启保存HCI日志 问题定位分析 Android日志查看logcat 搜索到关键log 01-20 10:07:55.403760 978 1075 V bt_stack: [VERBOSE2:btm_inq.cc(2032)] …

Linux 多线程(C语言) 备查

基础 1)线程在运行态和就绪态不停的切换。 2)每个线程都有自己的栈区和寄存器 1)进程是资源分配的最小单位,线程是操作系统调度执行的最小单位 2)线程的上下文切换的速度比进程快得多 3)从应用程序A中启用应…

flink源码分析之功能组件(四)-slot管理组件I

简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics&…

智能优化算法应用:基于黄金正弦算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于黄金正弦算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于黄金正弦算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黄金正弦算法4.实验参数设定5.算法结果6.参考…

【每日一题】拼车+【差分数组】

文章目录 Tag题目来源解题思路方法一:差分 写在最后 Tag 【差分数组】【数组】【2023-12-02】 题目来源 1094. 拼车 解题思路 本题朴素的解题思路是统计题目中提到的每一个站点的车上人数,如果某个站点的车上人数大于车上的座位数直接返回 false&…

Linux部署HDFS集群

(一)VMware虚拟机中部署 ps、其中node1、node2、node3替换为自己相应节点的IP地址,或者host文件中配置过的主机名,或者看前置准备 或者查看前置准备:Linux部署HDFS集群前置准备 1.下载压缩包 https://www.apache.or…

Leetcode—1094.拼车【中等】

2023每日刷题&#xff08;四十七&#xff09; Leetcode—1094.拼车 模拟实现代码 bool carPooling(int** trips, int tripsSize, int* tripsColSize, int capacity) {int arr[1003] {0};int numPassenger 0, fromidx 0, toidx 0;for(int i 0; i < tripsSize; i) {num…

力扣66. 加一

文章目录 力扣66. 加一示例代码实现总结收获 力扣66. 加一 示例 代码实现 class Solution {public int[] plusOne(int[] digits) {int ndigits.length;for(int in-1;i>0;i--){if(digits[i]!9){digits[i];for(int ji1;j<n;j){digits[j]0;}return digits;}}int[] resnew i…

爬虫学习(一)

文章目录 文件目录结构打开文件操作 爬取网页的理解尝试 文件目录结构 打开文件操作 爬取网页的理解尝试 这个放回值为请求正常