Nginx实现多虚拟主机配置

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 上面生成的文件位置;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SHAP(五):使用 XGBoost 进行人口普查收入分类

SHAP(五):使用 XGBoost 进行人口普查收入分类 本笔记本演示了如何使用 XGBoost 预测个人年收入超过 5 万美元的概率。 它使用标准 UCI 成人收入数据集。 要下载此笔记本的副本,请访问 github。 XGBoost 等梯度增强机方法对于具有…

Python----Pandas

目录 Series属性 DataFrame的属性 Pandas的CSV文件 Pandas数据处理 Pandas的主要数据结构是Series(一维数据)与DataFrame(二维数据) Series属性 Series的属性如下: 属性描述pandas.Series(data,index,dtype,nam…

模板初阶(2):函数模板的匹配原则,类模板的实例化

一、函数模板的匹配原则 int Add(const int& x, const int& y) {return x y; }template <class T> T Add(const T& x, const T& y) {return x y; }int main() {int a1 1, a2 2;Add(a1, a2);double d1 1.1, d2 2.2;Add(d1, d2);return 0; }一个非模…

ELK配置记录

1. filebeat.yml配置 启动命令&#xff1a; ./filebeat -e -c filebeat.yml # 输入 filebeat.inputs: - type: logenabled: truepaths:- /soft/log/base.*#跨行日志正则&#xff0c;从有时间的开始&#xff0c;到下一个时间之前结束multiline.pattern: ^\[[0-9]{4}-[0-9]{2}…

责任链设计模式

package com.jmj.pattern.responsibility;/*** 请假条类*/ public class LeaveRequest {//姓名private String name;//请假天数private int num;//请假内容private String content;public LeaveRequest(String name, int num, String content) {this.name name;this.num num;…

FL Studio21.2汉化永久中文语言包

FL Studio21.2这款软件在国内被广泛使用&#xff0c;因此又被称为"水果"。它提供音符编辑器&#xff0c;可以针对作曲者的要求编辑出不同音律的节奏&#xff0c;例如鼓、镲、锣、钢琴、笛、大提琴、筝、扬琴等等任何乐器的节奏律动。此外&#xff0c;它还提供了方便快…

使用极限网关助力 ES 集群无缝升级、迁移上/下云

在工作中大家可能会遇到以下这些场景&#xff1a; 自建 ES 集群需要平滑迁移到 XX 云&#xff1b;从 XX 云将 ES 集群迁移到自建机房&#xff1b;ES 集群进行跨版本升级&#xff0c;同时保留回退能力&#xff1b; 这些场景往往都还有个共同的需求&#xff1a;迁移过程要保证业…

【经验分享】DDNS配置--使用DDNS-GO

DDNS配置 DDNS&#xff08;Dynamic Domain Name Server&#xff0c;动态域名服务&#xff09;是将用户的动态IP地址映射到一个固定的域名解析服务上&#xff0c;用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序&…

Python标准库:copy库【侯小啾python领航班系列(十五)】

Python标准库:copy库【侯小啾python领航班系列(十五)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

Javaweb之Vue组件库Element案例分页工具栏的详细解析

4.4.3.5.3 分页工具栏 分页条我们之前做过&#xff0c;所以我们直接找到之前的案例&#xff0c;复制即可&#xff0c;代码如下&#xff1a; 其中template模块代码如下&#xff1a; <!-- Pagination分页 --> <el-paginationsize-change"handleSizeChange"c…

7、Jenkins+Nexus3+Docker+K8s实现CICD

文章目录 基本环境配置一、Jenkins安装必要插件二、Jenkins系统配置三、新建流水线四、在项目工程里添加Jenkinsfile、deploy.yml五、在项目工程里添加Dockerfile在这里插入图片描述 总结 提示&#xff1a;本章主要记录各基本环境搭建好后如何配置Jenkins流水线部署微服务到K8s…

Spring Framework详解

学习目标 能够说出Spring的体系结构 能够编写IOC入门案例 能够编写DI入门案例 能够配置setter方式注入属性值 能够配置构造方式注入属性值 能够理解什么是自动装配 一、Spring简介 1 Spring课程介绍 问题导入 我们为什么要学习Spring框架&#xff1f; 1.1 为什么要学 Spri…

C++的类和对象(一)

目录 1、面向过程和面向对象初认识 2、为什么要有类 3、类的定义 类的两种定义方式 4、类的访问限定符 5、类的作用域 5.1 为什么要有作用域&#xff1f; 5.2类作用域 6、类的实例化 6.1类的实例化的定义 6.2类的实例化的实现 6.3经典面试题 7、类对象 7.1类对…

QT 中使用 QTableView 和 QStandardItemModel 实现将数据导出到Excel 和 从Excel导入到 QTableView 的功能

简介 在Qt中&#xff0c;使用QTableView和QStandardItemModel来实现将数据导出到Excel和从Excel导入到QTableView的功能&#xff0c;而不使用第三方库&#xff08;如QXlsx&#xff09;。 效果 将 QTableView 中的数据导出到Excel //从tableview 导出到 EXcle void MainInterfa…

CSS BFC特性和应用

目录 1&#xff0c;介绍2&#xff0c;BFC布局规则3&#xff0c;创建BFC4&#xff0c;BFC应用1&#xff0c;浮动子元素使父级高度坍塌2&#xff0c;非浮动元素被浮动元素覆盖3&#xff0c;margin 合并1&#xff0c;父子 margin 合并&#xff1a;父级和第1个/最后1个子元素2&…

Ubuntu 安装 MySQL8 配置、授权、备份、远程连接

目录 0100 系统环境0200 下载0300 安装0400 服务管理0401 关闭、启动、重启服务0402 查看服务状态 0500 查看配置文件0600 账号管理0601 添加账号0602 删除账号0603 修改密码0604 忘记root密码 0700 自动备份0800 远程访问 0100 系统环境 [rootlocalhost ~]# cat /proc/versio…

SQL Server数据库部署

简介 21世纪&#xff0c;人类迈入了“信息爆炸时代”&#xff0c;大量的数据、信息在不断产生&#xff0c;伴随而来的就是如何 安全、有效地存储、检索和管理它们。对数据的有效存储、高效访问、方便共享和安全控制已经成 为信息时代亟待解决的问题。数据库&#xff08;Databas…

锐捷RG-UAC应用网关 前台RCE漏洞复现

0x01 产品简介 锐捷RG-UAC系列应用管理网关是锐捷自主研发的应用管理产品。 0x02 漏洞概述 锐捷RG-UAC应用管理网关 nmc_sync.php 接口处存在命令执行漏洞&#xff0c;未经身份认证的攻击者可执行任意命令控制服务器权限。 0x03 复现环境 FOFA&#xff1a;app"Ruijie-R…

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

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

认识K线形态,把握买入卖出时机

一、认识K线 1、K线的含义 股票一天之内有4个最关键的价格&#xff0c;开盘价、收盘价、最高价和最低价&#xff0c;把这个价格显示在图上就是K线图。 以金斗云智投电脑版为例&#xff0c;打开软件&#xff0c;任意搜索一支个股&#xff0c;就可以看到这支股票的K线。 股市新…