Nginx 虚拟主机与反向代理

article/2025/8/19 20:25:54

一、虚拟主机

虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。

利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。

实现nginx虚拟主机管理主要是通过配置文件nginx.conf

配置文件学习

使用命令去掉配置文件中的注释,这样看着清爽一点

egrep -v "#|^$" nginx.conf.default >nginx.conf

基于域名的虚拟主机

1.修改nginx配置文件

worker_processes  1;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {root   html;index  www.html index.html index.htm;}}server {listen       80;server_name  gf.gaofan.com; location / {root   html/;index  www.html index.html index.htm;}}
}

2.重启ngins

./nginx -t
./nginx -s reload

3.在/opt/nginx/html下新建页面www.html

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><h2>www.gaofan.com</h2></body>
</html>

4.修改/etc/hosts文件

5.重启网络

/etc/init.d/network restart

6.重地址栏输入域名,显示实现准备好的页面

基于端口的虚拟主机

1.修改nginx.conf配置文件

域名不变,修改端口

这里可以用vim编辑器::19,26 copy 27,可以一次复制8行

worker_processes  1;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {root   html;index  www.html index.html index.htm;}}server {listen       8001;server_name  gf.gaofan.com;location / {root   html/;index  www.html index.html index.htm;}}server {listen       8002;server_name  gf.gaofan.com;location / {root   html/;index  www_8002.html index.html index.htm;}}
}

2.在/opt/nginx/html下添加www_8002.html

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><h2>www.gaofan.com:8002</h2></body>
</html>

3.重启nginx

4.在地址栏输入域名加上端口

基于ip地址的虚拟主机

1.添加ip,打开/etc/sysconfig/network-scripts

编辑ifcfg-eno16777736添加一个ip用来测试

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=f1035fe9-96b6-4ce3-a1ea-09d67861e1ae
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.174.12
NETMASK=255.255.255.0
GATEWAY=192.168.174.2
DNS1=114.114.114.114
DNS2=114.114.114.115

2.重启网络使之生效

/etc/init.d/network restart

3.修改nginx.conf

worker_processes  1;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {root   html;index  www.html index.html index.htm;}}server {listen       8001;server_name  gf.gaofan.com;location / {root   html/;index  www.html index.html index.htm;}}server {listen       8002;server_name  gf.gaofan.com;location / {root   html/;index  www_8002.html index.html index.htm;}}server {listen       80;server_name  192.168.174.12;location / {root   html/;index  ip.html index.html index.htm;}}
}

4.新建ip.html

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><h2>http://192.168.174.12/</h2></body>
</html>

5.重启nginx

6.地址栏输入ip

二、反向代理

什么是代理服务器 

代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。 

技术分享

为什么要使用代理服务器 

1)提高访问速度 

由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。 

2)防火墙作用 

由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。 

3)通过代理服务器访问不能访问的目标站点 

互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的FQ浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。 

什么是正向代理?什么是反向代理? 

正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。 

技术分享

反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。 

技术分享

反向代理有哪些主要应用

现在许多大型web网站都用到反向代理。除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。 

配置nginx实现反向代理

1.安装jdk,安装tomcat,修改server.html文件添加端口8081

2.修改nginx.conf文件

worker_processes  1;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;upstream server_tomcat1{server 192.168.174.12:8080 weight=2;}upstream server_tomcat2{server 192.168.174.12:8081 weight=8;}server {listen       80;server_name  localhost;location / {root   html;index  www.html index.html index.htm;}}server {listen       8001;server_name  gf.gaofan.com;location / {root   html/;index  www.html index.html index.htm;}}server {listen       8002;server_name  gf.gaofan.com;location / {root   html/;proxy_pass http://server_tomcat2;proxy_set_header Host $host;index  www_8002.html index.html index.htm;}}server {listen       80;server_name  192.168.174.12;location / {root   html/;proxy_pass http://server_tomcat1;proxy_set_header Host $host;index  ip.html index.html index.htm;}}}

3.重启nginx

4.浏览器输入IP地址192.168.174.12或域名gf.gaofan.com:8002

1.访问域名gf.gaofan.com:8002,通过hosts文件解析,找到192.168.174.12服务器

2.根据nginx反向代理,找到server_name:gf.gaofan.com的节点,然后根据proxy_pass:http://server_tomcat2将其请求转发到server_tomcat2上,即192.168.174.12:8081服务器


http://chatgpt.dhexx.cn/article/8qdtHHCF.shtml

相关文章

【设计模式】学习笔记16:代理模式之虚拟代理(实现CD封面加载器)

本文出自 http://blog.csdn.net/shuangde800 在上篇中&#xff0c;我们学习了代理模式&#xff0c;并用Java RMI实现了一个最简单的远程代理。 实际上代理模式并不仅仅应用与远程代理&#xff0c;还有很多其他的应用。 比如&#xff1a;虚拟代理。 代理模式可以以很多形式出现…

代理模式(三):远程代理,虚拟代理,缓冲代理

15.4 远程代理 远程代理(Remote Proxy)是一种常用的代理模式&#xff0c;它使得客户端程序可以访问在远程主机上的对象&#xff0c;远程主机可能具有更好的计算性能与处理速度&#xff0c;可以快速响应并处理客户端的请求。远程代理可以将网络的细节隐藏起来&#xff0c;使得客…

虚拟机 全局代理 主机代理_比较虚拟代理与真实代理的性能

云计算的关键基础是虚拟化。 面向云的设计人员&#xff0c;开发人员和管理员需要问自己的一个问题是&#xff1a;“虚拟化组件的性能水平如何与其“真实”物理对应物相提并论&#xff1f;” “如果存在负面差距&#xff0c;我该如何克服呢&#xff1f;” 本文介绍了在虚拟机&a…

设计模式——代理模式(虚拟代理)

代理模式的类型分为: (1)虚拟代理 (2)远程代理 (3)智能指引 (4)保护代理 这一篇主要讲虚拟代理,想要知道其他类型讲解的小伙伴可以去我其他博客翻一翻哦。 首先来理解一波虚拟代理,啥叫虚拟代理? 举个很常见也很通俗的例子,咱们平时抽奖的时候,是不是都想要抽个…

[转载]虚拟代理模式(Virtualnbsp;Proxy)

虚拟代理模式(Virtualnbsp;Proxy) 第25章 虚拟代理模式(Virtual Proxy) 描述&#xff1a; 虚拟代理模式 (Virtual Proxy)是一种节省内存的技术&#xff0c;它建议创建那些占用大量内存或处理复杂的对象时&#xff0c;把创建这类对象推迟到使用它的时候。在特定的应用 中&#x…

代理模式——虚拟代理(二)

代理模式定义 为另一个对象提供一个替身或占位符以控制对这个对象的访问。使用代理模式创建代表对象&#xff0c;让代表对象控制对某对象的访问&#xff0c;被代理的对象可是远程的对象、创建开销大的对象或需要安全控制的对象。 代理分三种&#xff1a; 1.远程代理&#xff…

SQL语法与数据库快速入门(1)

目录 数据库简介数据库分类常用数据库简介使用场景MySql 的安装与配置数据库客户端工具MySql 介绍SQL 简介DDL 数据库操作-创建DDL 数据库操作-查看DDL 数据库操作-修改DDL 数据库操作-删除DDL 数据库表操作简介DDL 数据库表操作-创建DDL 数据库表操作-查看DDL 数据库表操作-修…

SQL语法与数据库快速入门(2)

目录&#xff1a; 多表简介SQL 约束-外键约束多表关系简介多表查询多表查询-内连接查询多表查询-外连接查询子查询简介子查询实战数据库进阶redis 内存数据库mongodb nosql 数据库neo4j 图数据库 1.多表简介 多表及使用场景介绍&#xff1a; 多表顾名思义就是在数据库设计中…

【数据库】MYSQL轻松入门

文章目录 MYSQL入门一、MYSQL概述1. 数据库相关概念1.1 数据库&#xff0c;数据库管理系统与SQL1.2 数据库种类以及主流数据库管理系统排名1.2.1 数据库的种类1.2.2 数据库主流排名 1.3 MySQL数据库安装1.3.1 下载1.3.2 修改密码 1.4 数据模型 二、SQL2.1 通用语法与注释2.2 SQ…

Java连接mysql数据库的五分钟快速入门教程

总体流程&#xff1a;数据库->Java 总体步骤&#xff1a; 1.创建数据库并新建表 2.创建一个Java项目&#xff0c;在项目下新建文件夹lib&#xff0c;类型为Directory 3.将下载好mysql-connector-java-8.0.27.jar放到lib目录下 4.将lib下的依赖添加到Java项目中 5.编写代码连…

数据库快速入门教程--视频

数据库快速入门教程--视频 下载地址&#xff1a;http://v.51work6.com/courseInfoRedirect.do?actioncourseInfo&courseId240579本课程是这个课程体系的核心之一&#xff0c;为软件开发人员所需数据库知识的学习教材&#xff0c;而不是培训一个DBA&#xff08;数据库管理员…

Docker 安装与操作 Mysql 数据库快速入门

目录 演示环境说明 Mysql 镜像检索 Mysql 镜像下载 Mysql 容器运行 错误运行方式 正确运行方式 端口映射 连接测试 高级命令指定编码运行 演示环境说明 1、《 Docker 镜像操作 常用命令》中说明了如何从 Docker Hub 上下载镜像&#xff0c;《 Docker 容器操作 常用命…

数据库(MySQL)基础快速入门!

前言&#xff1a;这篇送给那些想要学会数据库&#xff0c;但又不想花太多时间的同学们。看了这篇数据库知识&#xff0c;轻轻松松搞定它&#xff01;用不同的工具操作数据库命令可能会有小小的不同&#xff0c;我用的是系统自带的cmd。&#xff08;凡是数据库名称&#xff0c;数…

MySQL数据库1——数据库快速入门

MySQL数据库——数据库基础 &#xff08;一&#xff09;为什么使用数据库 数据库用来存储海量数据数据库利于数据查询和管理数据库相对于文件安全性更高数据库相对于文件利于控制 &#xff08;二&#xff09;MySQL的基本使用 安装好MySQL数据库以后&#xff0c;连接服务器。…

mysql快捷创建数据库_mysql数据库快速入门(1)

1、数据库操作 1.1、连接mysql服务器 mysql -u root( 用户名 ) -p 1.2、退出mysql命令提示窗 exit 1.3、查看版本 SELECT VERSION(); 1.4、列出数据库列表 SHOW DATABASES; 1.5、创建数据库 CREATE DATABASE IF NOT EXISTS [database] DEFAULT CHARSET UTF8; 1.6、选择要操作的…

SQLite3数据库的快速入门菜鸟教程

SQLite3是一个轻量级嵌入式数据库&#xff0c;其主要有以下的特点&#xff1a; 1、零配置无需安装和管理配置&#xff1b; 2、储存在单一磁盘文件中&#xff1b; 3、数据库文件可在不同字节序的机器自由共享&#xff1b; 4、比目前流行的大多数数据库对数据的操作要快&…

MySQL数据库快速入门

MySQL基础 1、数据库相关概念 以前我们做系统&#xff0c;数据持久化的存储采用的是文件存储。存储到文件中可以达到系统关闭数据不会丢失的效果&#xff0c;当然文件存储也有它的弊端。假设在文件中存储以下的数据&#xff1a; 姓名 年龄 性别 住址 张三 23 男 北京西三旗…

MySQL数据库快速入门到精通(超详细保姆级,建议收藏)这可能是目前最适合你的教程,从基础语法到实例演示。

前言 此文章旨在为需要掌握快速开发和复习MySQL的同学所准备&#xff0c;您完全可以把此文章当作参考文档来使用&#xff0c;本文将尽量精简&#xff0c;使您快速的理解和掌握语法。 关于MySQL MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB公司开发&#xff0c;…

超经典两万字,MySQL数据库快速入门。

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」&#xff1a;此文章已录入专栏《MySQL数据库快速入门》 MySQL快速入门 一、环境准备1. MySQL下载及安装2. MySQL启动3. MySQL客…

SQL数据库快速入门基础

SQL(Structure Query Language,结构化查询语言)语言是国际标准化组织(ISO)采纳的标准数据库语言。 数据库就是一幢大楼,我们要先盖楼,然后再招住户(住户当然就是数据库对象,)。我们盖得大楼的基本格局设计师们已经为我们设计好,我们在创建数据库过程中,系统(设计师)…