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和80server {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.htmlautoindex 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.mzph.cn/news/192273.shtml

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

相关文章

Linux /etc/hosts文件

Linux的 /etc/hosts 文件用于静态地映射主机名到 IP 地址。 通常用于本地网络中的名称解析,它可以覆盖 DNS 的设置。当你访问一个域名时,系统会首先检查 /etc/hosts 文件,如果找到了匹配项,就会使用该 IP 地址,否则会…

ctfhub技能树_web_web前置技能_HTTP

目录 一、HTTP协议 1.1、请求方式 1.2、302跳转 1.3、Cookie 1.4、基础认证 1.5、响应包源代码 一、HTTP协议 1.1、请求方式 注:HTTP协议中定义了八种请求方法。这八种都有:1、OPTIONS :返回服务器针对特定资源所支持的HTTP请求方法…

通过查看ThreadLocal的源码进行简单理解

目录 为什么要使用ThreadLocal? 简单案例 ThreadLocal源码分析 断点跟踪 为什么要使用ThreadLocal 在多线程下,如果同时修改公共变量可能会存在线程安全问题,JDK虽然提供了同步锁与Lock等方法给公共访问资源加锁,但在高并发…

力扣 --- H指数

题目描述: 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他&#xff…

【HDFS】调试慢节点pipiline ack信息

Client - DN1 - DN2 - DN3 DN3 send ack:[0][d3]。 DN2 send ack: [从dn2入队到收到dn3的ack耗时,0] [d2,d3]。 DN1 send ack: [pkt从dn1入队到收到dn2的ack耗时,pkt从dn2入队到收到dn3的ack耗时,0] [d1,d2,d3]。 Client receive: 就是DN1发送过来数据。 客户端收到的第一个…

【论文笔记】Universal Guidance for Diffusion Models

Abstract 典型的扩散模型经过训练以接受特定形式的条件作用(最常见的是文本),并且如果不经过重新训练就不能接受其他形式的条件的作用。 这项工作中提出了一种通用制导算法(universal guidance algorithm),使扩散模型能够通过任意…

python弹球小游戏

import pygame import random# 游戏窗口大小 WIDTH 800 HEIGHT 600# 定义颜色 WHITE (255, 255, 255) BLACK (0, 0, 0) RED (255, 0, 0) GREEN (0, 255, 0) BLUE (0, 0, 255)# 球的类 class Ball:def __init__(self):self.radius 10self.speed [random.randint(2, 4),…

ElasticSearch之Delete index API

删除指定的索引。 同时删除索引关联的数据、分片、元数据等相关的资源,因此执行前需要慎重。 命令样例如下: curl -X DELETE "https://localhost:9200/testindex_003?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elasti…

4-Docker命令之docker pause

1.docker pause介绍 docker pause命令是用来暂停docker容器中的所有进程 2.docker pause用法 docker pause [参数] container [container......] [root@centos79 ~]# docker pause --helpUsage: docker pause CONTAINER [CONTAINER...]Pause all processes within one or …

DELL EMC unity 存储系统日志收集方法

对于一些非简单的硬件故障,解决故障最有效、最快速的方法就是收集日志,而不是瞎搞。常见的乱搞方法就是 1. reimage系统‘ 2. 更换控制器;3, 重启。 本文详细介绍了图形界面GUI和命令行CLI下如何收集DELL EMC Unity日志的方法和常…

Spring Cloud笔记 —— 什么是Spring Cloud?

引言: 在写这篇博客之前,其实吧,博主很久之前有过一段时间的Spring Cloud的案例项目开发经验,就是一个案例项目开发而已,也说不上有多高大上,那个时候,我其实也是从众而已罢了,毕竟现…

微信小程序:input双向绑定

微信小程序&#xff1a;input双向绑定 微信小程序&#xff1a;input双向绑定1 数据容器准备2 输入组件准备3 逻辑代码准备4 总结实战示例1.wxml文件导入2.js文件导入 微信小程序&#xff1a;input双向绑定 <说明> PS&#xff1a;该笔记采用渐进式编程&#xff0c;使每一步…

LLM;超越记忆《第 2 部分 》

一、说明 在这篇博客中&#xff0c;我深入研究了将大型语言模型&#xff08;LLM&#xff09;提升到基本记忆之上的数学框架。我们探索了动态上下文学习、连续空间插值及其生成能力&#xff0c;揭示了 LLM 如何理解、适应和创新超越传统机器学习模型。 LLM代表了人工智能的重大飞…

DDD系列 - 第4讲 从架构师的角度看待DDD - 一个关于拆解、微服务、面向对象的故事(二)

目录 第3次拆解 - 面向对象分析与设计3.1 交互入口实现层3.2 面向对象分析3.2.1 根据业务映射类3.2.2 对象持久化仓库3.2.3 自定义属性类3.2.4 类间的关联关系3.2.5 分包提升内聚、包内指定入口类降低耦合3.2.6 定义交互出口3.3 流程编排 & 业务编排3.4 交互出口实现层 &am…

基于相关性的四种机器学习聚类方法

在这篇文章中&#xff0c;基于20家公司的股票价格时间序列数据。根据股票价格之间的相关性&#xff0c;看一下对这些公司进行分类的四种不同方式。 苹果&#xff08;AAPL&#xff09;&#xff0c;亚马逊&#xff08;AMZN&#xff09;&#xff0c;Facebook&#xff08;META&…

TCP简介及特性

1. TCP协议简介 TCP是Transmission Control Protocol的简称&#xff0c;中文名是传输控制协议。它是一种面向连接的、可靠的、基于IP的传输层协议。两个TCP应用之间在传输数据的之前必须建立一个TCP连接&#xff0c;TCP采用数据流的形式在网络中传输数据。TCP为了保证报文传输的…

目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】图像预处理方法

目录 前言 知识储备 Opencv图像操作 几个高频面试题目 为什么需要图像算法? 算法原理

基于eBPF检测非法调试行为

本文基于eBPF编写一个内核模块来监测ARM调试寄存器&#xff0c;来检测可能的非法调试行为&#xff0c;大致步骤如下&#xff1a; 1. 安装必要的软件和工具&#xff1a;确保系统已经安装了支持eBPF开发的必要软件和工具&#xff0c;如LLVM、Clang和libbpf等。同时&#xff0c;还…

Effective CPP(三):类的构造/析构/赋值运算

文章目录 一、C类中编译器默认创建的函数二、为多态基类声明一个虚析构函数三、在析构函数中 "捕获" 异常四、不在构造函数和析构函数的过程中调用虚函数五. 重载赋值类运算符号的时候返回 this 指针六. 在 operator 中处理“自我赋值”七. 拷贝复制对象的时候应该考…

菜鸟内推java岗一面

菜鸟内推&#xff0c;java岗&#xff0c;电话一面 总时长 40min&#xff0c;过程如下&#xff1a; 1、自我介绍&#xff0c;学习、项目啥的&#xff0c;简单提一提。 2、接触到的微服务架构啥的&#xff0c;怎么解决问题等等。 3、 数据 库索引&#xff0c;对索引的理解&#x…