文章编号:11606时间:2024-10-01人气:
Nginx虚拟主机允许您在同一台服务器上托管多个网站,每个网站都有自己的独立配置和根目录。这对于托管多个应用程序或提供不同的web服务非常有用。
要创建Nginx虚拟主机,需要创建一个新的配置文件。通常这些文件位于`/etc/nginx/sites-available/`目录中。对于每个虚拟主机,创建一个带有`.conf`扩展名的文件。
这里是一个虚拟主机配置文件的基本示例:
```server {listen 80;server_name example.com;root /var/www/example.com/public;index index.PHP index.html;}listen 80;:指定虚拟主机将侦听端口80(默认HTTP端口)。server_name example.com;:指定虚拟主机的域或子域。root /var/www/example.com/public;:指定虚拟主机的根目录,即web文件所在的目录。index index.php index.html;:指定当访问根目录时加载的默认文件。创建虚拟主机配置文件后,需要在`/etc/nginx/sites-enabled/`目录中创建指向它的符号链接。这将启用虚拟主机。```sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf```Nginx是一个高效HTTP和反向代理服务器,用于处理网站的流量分配和代理访问。
首先,确保你的系统安装了必要的依赖,如yum和pcre。 接着,按照标准流程安装Nginx,启动并检查其正确安装。 完成安装后,你可以为Nginx设置服务,以便于系统管理。
域名代理配置要实现域名代理,关键在于正确配置DNS。 将你的公网IP与目标域名*关联,以便所有该级子域名的请求都将被Nginx接收并代理到指定端口。 在Nginx的配置文件中,具体设置location规则,如将的/路径请求代理到127.0.0.1:9091。
此外,利用map功能可以根据请求特性调整connection_upgrade值,设置超时时间以优化WebSocket连接性能。 通过proxy_set_header确保升级参数传递,完成配置后,进行测试并reload Nginx。
WebSocket与HTTP的区别WebSocket是一种基于TCP的双向通信协议,与HTTP不同,它允许服务器和浏览器之间实现实时通信。 WebSocket通过三次握手建立连接,之后使用单独的TCP连接传输数据,而HTTP则是一次性请求响应。
连接过程如下:客户端发送包含升级协议信息的HTTP请求,服务器确认后,建立TCP连接并进入全双工通信阶段。
1. 准备工具和原料:电脑和Nginx软件。 2. 配置IP地址以实现两个网站的部署:将两个网站部署在同一台服务器上,两个域名解析到同一个IP地址。 这种部署方式允许用户通过两个不同的域名访问两个完全不同的网站,而这两个网站之间互不影响,类似于访问两个独立服务器的情况。 这种配置方式通常被称为两个虚拟主机。 3. 配置代码:```server {listen 80;server_;location / {proxy_pass}}server {listen 80;server_;location / {proxy_pass}}```这段配置代码中,我们在服务器上监听80端口,并为两个域名分别配置了server_name。 根据server_name,Nginx可以将请求反向代理到对应的应用服务器上。 4. server_name配置的作用:除了实现域名到应用服务器的映射外,server_name配置还可以过滤掉那些可能恶意指向主机服务器的域名。 这样,我们可以有效防止服务器因为恶意请求而受到攻击。
Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现好。 Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达个并发连接数。 需要客户自己在浏览器配置代理服务器地址。 例如:在大陆访问,我们需要一个代理服务器,我们通过代理服务器去访问谷歌,这个过程就是正向代理。 反向代理,客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。 单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们说的负载均衡。 为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。 降低原来单个服务器的压力。 进入到下面的目录,然后使用命令 配置文件所在位置:/usr/local/nginx/conf/ 由全局块+events块+http块组成 从配置文件开始到events之间的内容,主要会设置一些影响Nginx服务器整体运行的配置指令,主要包括配置运行Nginx服务器的用户(组)、允许生成的worker process数,进程pid存放路径、日志存放路径和类型以及配置文件的引入等。 events块设计的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括是否开启对多work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个work process可以同时支持的最大连接数等。 下面的例子表示每个work process支持的最大连接数为1024。 这部分配置对Nginx的性能影响较大,在实际中应该灵活配置。 Nginx服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里,http块又包括http全局块和server块。 http全局块配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。 这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。 每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。 每个server块也可以分为全局server块,以及可以同时包含多个location块。 最常见的配置时本虚拟主机的监听配置和本虚拟主机的名称或IP配置。 一个server块可以配置多个location块。 这块的主要作用是基于Nginx服务器接收到的请求字符串(例如server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如前面的/uri-string)进行匹配,对特定的请求进行处理。 地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。 访问,访问到的是Tomcat的主页面。 Nginx+JDK8+Tomcat 访问:,看到的是Tomcat的首页。 根据访问的路径跳转到不同的服务器中去。 访问直接跳到访问直接跳到Nginx+JDK8+配置两个Tomcat,Tomcat的配置不再讲述。 访问跳到了页面。 访问跳到了页面。 假如Nginx代理服务器Server的配置为:192.168.71.167:9001,跳到:127.0.0.1:8080,访问者的IP为:192.168.71.200。 通过访问,实现负载均衡的效果,平均分摊到8080和8081端口中。 Nginx+JDK8+2台Tomcat,一台8080,一台8081。 访问:,8080和8081交替访问。 1 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2 weight weight代表权重,默认为1,权重越高被分配的客户端越多。 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 3 ip_hash 每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,示例如下: 4 fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。 访问图片:访问页面:访问目录:(因为设置了autoindex on;) 两台机器,每台机器都装有keepalived+Nginx+Tomcat。 主备keepalived服务器中只有master一台机器会出现VIP地址,否则会出现脑裂问题。 【提示】脚本要加+x的执行权限:chmod +x chk_ 在Nginx里把虚拟IP配置进去即可。 一个Nginx是由一个master进程和多个worker进程组成的。 客户端发送请求到Master,然后给worker,再由这些work争抢处理这个请求。 1 可以使用nginx -s reload进行热部署方式; 2 每个worker是独立的进程,如果有其中的一个worker出现了问题,其他worker独立的继续进行争抢,实现请求的过程,不会造成服务的中断; Nginx和Redis类似,都采用了io多路复用机制。 每个worker进程都可以把CPU发挥到极致,一般来说worker数和服务器的CPU数相等是最为适宜的。 发送请求:访问静态资源占用2个连接,反向代理占用4个连接。 【温馨提示】
为提供系统的高可用,满足网络安全等级保护的热冗余的要求,平台需要对应用程序做高可用,本文主要针对Nginx进行集群配置。
一、NginxHA概述nginx在系统中的作用是给系统提供一些负载均衡和动态代理的作用。 通过不同轮询到不同服务,即使一台服务器挂掉,也能将请求转发到其他服务器上。
但如果nginx挂掉,那此时整个系统就没有入口了,所以,我们需要对Nginx做高可用配置。
这里准备两台Nginx服务器。
具体的思路是,将两台Nginx服务器都设置成一个虚拟IP,当主Nginx服务器挂掉之后,当我们再次访问的时候,实际上就是访问我们的从Nginx服务器来做负载均衡了,整个IP切换过程对于用户来说是没有感觉的,这种工作IP地址变化的过程,被称为IP漂移。
这个虚拟IP是由第三方软件提供的,它就是keepalived。
二、keepalivedKeepalived提供了两种模式:
master->backup模式:一旦主库宕机,虚拟ip会自动漂移到从库,当主库修复后,keepalived启动后,还会把虚拟ip抢占过来,即使设置了非抢占模式(nopreempt)抢占ip的动作也会发生。
backup->backup模式p会自动漂移到从库上,当原主库恢复和keepalived服务启动后,并不会抢占新主的虚拟ip,即使是优先级高于从库的优先级别,也不会发生抢占。 为了减少ip漂移次数,通常是把修复好的主库当做新的备库。
1、首先,我们先确认下网卡及IP
ipaddrshow|grepinet2、接着进行安装:
yuminstallkeepalived–y3、接着配置/etc/keepalived/这个文件
主服务器配置:
!ConfigurationFileforkeepalivedglobal_defs{#标识主机idrouter_idNGINX_102}##检测脚本和权重参数vrrp_scriptchk_http_port{script/opt/software/nginx/sh/nginx_##配置脚本的路径interval2#(检测脚本执行的间隔)weight2##权重}vrrp_instanceVI_1{#标记为主服务器stateMASTERinterfaceens33virtual_router_id51priority100advert_int1authentication{auth_typePASSauth_pass1111}virtual_ipaddress{192.168.81.104}track_script{chk_http_port}}从服务配置,只需把state改为backup,和优先级降低即可。
vrrp_instanceVI_1{stateBACKUP#备份服务器上将MASTER改为BACKUPinterfaceeth0##网卡,可以从ipconfig这个命令查到virtual_router_id51#主、备机的virtual_router_id必须相同priority90#主、备机取不同的优先级,主机值较大,备份机值较小,一般来说,主100备80advert_int1##心跳,秒,每隔一秒发送一个心态确认我们的Nginx服务器的存活情况authentication{##密码验证auth_typePASSauth_pass}virtual_ipaddress{192.168.81.104##VRRPH虚拟地址}}脚本内容如下:
nginx_:脚本的路径与nginx的启动路径一致
#!/bin/bashA=`ps-Cnginx–no-header|wc-l`if[$A-eq0];then/usr/local/nginx/sbin/nginxsleep2if[`ps-Cnginx--no-header|wc-l`-eq0];thenkillallkeepalivedfifi脚本的目的是为了检测nginx服务是否挂掉,如果挂掉就尝试去启动它,如果启动失败,就把keepalived服务关闭。 经过测试单独关闭nginx,不关闭keepalived的话是不会转发到nginx从服务器的。 因此,脚本的目的是为了保证这两个要么全部存在,要么全部失败。
注意:有个坑,如果发现你的nginx关闭之后脚本不执行的原因。
可用先看下路径
可用看下脚本的准备性,当然我这个是可用执行的
最后重要的一点是需要关闭selinux,然后重新启动
setenforce0永久关闭:
sed-is/^SELINUX=.*/SELINUX=disabled/g/etc/selinux/config默认是抢占式执行的。
启动方式:
1、先启动nginx
2、再启动keepalived
systemctlrestartkeepalived如果出错,记得查看日志:
tail-f/var/log/messages另外,如果依旧切换不过来,可以查看防火墙或ipotables有无限制。
工具原料:电脑+nginx
nginx 配置 ip方法如下:
一、将a和b两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。
二、配置代码如下:
三、在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。
四、server_name配置还可以过滤有人恶意将某些域名指向主机服务器。
内容声明:
1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:http://www.jujiwang.com/article/475487b707556477fe1b.html,复制请保留版权链接!
前端框架是现代Web开发不可或缺的一部分,它们提供了强大的工具和组件,使开发人员能够快速轻松地构建健壮且可扩展的Web应用程序,但是,为了充分利用前端框架,至关重要的是遵循最佳实践,以确保代码的可维护性、可扩展性和灵活性,以下是前端框架的最佳实践指南,代码可维护性使用模块化架构,将代码组织成独立模块,每个模块专注于特定功能,这使得代码...。
技术教程 2024-09-30 22:24:35
简介快速排序是一种高效的排序算法,以其出色的平均时间复杂度O,nlogn,而闻名,它基于分治法,使用称为,分区,的过程将数组划分为较小的问题,原理快速排序的工作原理如下,选择数组中的一个元素作为,枢纽,pivot,对数组进行分区,将所有小于枢纽的元素放在枢纽的左边,而所有大于枢纽的元素放在枢纽的右边,向左和向右递归应用快速排序,直...。
技术教程 2024-09-29 05:23:34
在CSS中,我们可以使用element.style来直接操作元素的样式,这种方法可以简化代码,避免使用冗长的CSS选择器,场景示例,定制表格列表和搜索以下是一个使用Element.style定制表格列表和搜索的示例,exportdefault,data,return,tableData,[,id,1,name,张三,age,20,...。
本站公告 2024-09-24 23:48:20
前言教育对于每个人的个人发展和社会进步都是至关重要的,传统上,许多教育网站和学习平台对于残疾学习者来说都是不可访问的,这剥夺了他们接受高质量教育的机会,阻碍了他们充分发挥自己的潜力,无障碍设计的教育网站模板的重要性无障碍设计的教育网站模板为所有学习者提供了平等的机会,无论其能力或残疾如何,这些模板遵循网络内容无障碍指南,WCAG,标准...。
互联网资讯 2024-09-24 12:44:39
简介Unicode是一个包含世界上所有书面语言的大型字符编码标准,对于Java程序员来说,重要的是能够轻松地处理Unicode字符,因为它们可以在应用程序的各个方面中出现,例如字符串、文本文件和数据库,理解UnicodeUnicode字符由唯一编号,称为代码点,表示,代码点值从0到14381679范围,Unicode字符集分为以下几个...。
互联网资讯 2024-09-22 23:58:14
准备好让您的网站脱颖而出并留下持久的印象了吗,欢迎来到令人惊叹的模板宝库,它为您提供了一系列精心制作的模板,将您的网页设计之旅提升到一个全新的高度,无尽的选择,适合各种需求无论您是寻找时尚的商务网站、迷人的创意博客,还是引人注目的电子商务商店,我们的模板宝库都能满足您的需求,从现代极简主义到充满活力的复古风格,我们有各种各样的设计可供...。
技术教程 2024-09-15 22:03:42
在当今快节奏的业务环境中,收集和处理客户反馈至关重要,为了满足这一需求,创建一个虚拟中心是一个有效的解决方案,本文将指导您使用留言板代码创建客户反馈系统,从而建立一个用于意见和反馈的虚拟中心,为何创建虚拟中心,改善客户体验,收集和解决客户反馈,从而增强客户与企业的互动,提高产品和服务,分析反馈,识别改进领域,从而优化产品和服务,提升客...。
互联网资讯 2024-09-09 20:37:01
简介在Java编程中,移位运算符是一个强大的工具,可用于快速高效地处理位操作,通过使用移位运算符,我们可以轻松地执行诸如位移、掩码和检查等操作,而无需使用更复杂的算法或数据结构,移位运算符类型Java中提供了以下移位运算符,左移运算符,<,<,将数字向左移指定位数,相当于乘以2的幂右移运算符,>,>,将数字向右...。
本站公告 2024-09-09 00:43:55
简介C是一种通用编程语言,由DennisRitchie于1972年在贝尔实验室开发,C语言因其效率、可移植性和广泛的用途而闻名,它被广泛用于开发操作系统、嵌入式系统、游戏和许多其他应用程序,C编程语言的基础数据类型C语言支持多种数据类型,包括整型、浮点型、字符型和字符串型,每个数据类型都有自己的大小、值范围和存储方式,变量变量用于存储...。
互联网资讯 2024-09-07 05:02:21
JavaScript是一种功能强大的语言,它可以使你的网页变得交互式、动态且令人惊叹,通过利用JavaScript的特效功能,你可以创建引人注目的视觉效果,吸引用户的注意力并提升他们的体验,使用HTML5创建元素使用JavaScript的第一步是创建HTML5元素,这些元素将成为你执行特效的目标元素,<,html>,<,h...。
技术教程 2024-09-05 23:33:06
在当今瞬息万变的科技时代,Java编程语言已成为软件开发领域的基石,掌握Java编程艺术已成为任何有志成为软件开发人员的必备技能,对于初学者或希望提升技能的人员来说,传统的学习途径往往代价高昂且耗时,为了打破这一障碍,本文将向您介绍一系列最全面的免费教程网站,让您无需花费高昂代价就能系统地掌握Java编程知识并开启您的软件开发之旅,1...。
最新资讯 2024-09-05 14:53:26
概述SQL事务是一种机制,用于确保数据库中的数据一致性和完整性,它是一组相关操作,要么全部成功,要么全部失败,并发控制是指控制多个用户同时访问和修改数据库中的数据的方法,事务属性一个事务必须具备以下属性,原子性,Atomicity,事务中的所有操作要么全部成功,要么全部失败,一致性,Consistency,事务保持数据库中数据的完...。
互联网资讯 2024-09-05 12:24:29