Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >linux中创建Nginx虚拟主机

linux中创建Nginx虚拟主机

作者头像
入门笔记
发布于 2022-06-02 09:09:03
发布于 2022-06-02 09:09:03
2K00
代码可运行
举报
文章被收录于专栏:入门小站入门小站
运行总次数:0
代码可运行

什么是虚拟主机?

如果你不确定虚拟主机是什么,让我解释一下。这是一个Apache HTTP Server 术语,然而,Nginx 用户也经常使用它。事实上,Nginx 的正确术语是 server block

虚拟主机是一种在单个服务器上托管多个域名的方法。

虚拟主机如何工作?

当你在服务器上启动像 Nginx 这样的 Web 服务器软件时,该 Web 服务器将自己绑定到一个或多个网络端口。通常用于将成为端口 80 和 443 的 Web 服务器。

现在,当计算机访问网站时,它将通过 Internet 向服务器发送请求,服务器将接收该请求。服务器要做的第一件事是查看请求发送到目标端口的端口。

接下来,它将使用该目标端口来确定将该信息转发到哪个应用程序。这意味着你的 Web 服务器只能有一个接收请求的应用程序。

但是,如果你想在同一 Web 服务器上托管两个不同的网站怎么办?服务器需要能够判断数据包何时进入请求网站。它需要能够知道正在请求哪个网站,以便知道要发回哪些信息。

无论请求哪个网站,服务器都不能仅使用端口号和目标端口来确定客户端尝试访问哪个网站。服务器要做的就是说我要向 Nginx 发送这个请求,然后 Nginx 必须从那里决定它要发回什么。

Nginx 有一个叫做server blocks的概念。服务器块实际上可以用于两种不同的事情。它们可用于根据请求的 IP 地址为不同的网站提供服务,也可用于根据正在使用的域名为不同的网站提供服务。

  • Nginx 虚拟主机是如何工作的

因此,当你输入网站名称时www.example.com,当服务器收到该名称时,Nginx 实际上可以查看请求的服务器名称的 HTTP 标头内部,然后根据其配置的虚拟主机,决定存储哪个目录网站文件,并根据服务器名称将正确的响应返回给客户端。

如何创建 Nginx 虚拟主机(服务器块)

我们可以在两个目录中创建和存储我们的虚拟主机配置文件。它们都位于/etc/nginx目录中。这两个目录的名称是sites-availablesites-enabled

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/etc/nginx/sites-available

定义单个虚拟主机(网站)的目录。请记住,Nginx 不会使用在此目录中找到的配置文件,除非它们链接到该 /etc/nginx/sites-enabled目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/etc/nginx/sites-enabled

由 Nginx 主动提供服务的虚拟主机(网站)列表。

你可能想知道为什么我们需要两个目录来存储我们的虚拟主机文件?这样做的主要好处是我们可以在 Nginx 服务器上创建许多虚拟主机文件,但我们可以根据我们的要求启用它们。

现在,我们将创建虚拟主机文件以在 Nginx 服务器中托管具有多个域的多个站点。域名为 rumenz.comtooltt.com

1. 创建目录结构

我们需要做的第一件事是为每个虚拟主机创建一个目录来存储不同的网站内容。我们将这些目录放在其中 /var/www ,并以每个域名命名。

运行以下命令来创建目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo mkdir -p /var/www/rumenz
sudo mkdir -p /var/www/tooltt

-p 上面命令中的 标志告诉 mkdir 在此过程中创建任何必要的父目录。

2. 为每个网站创建测试页面

接下来,出于演示目的,让我们index.html 在域的文档根目录中创建一个 文件,以便我们可以显示一些内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo vim /var/www/rumenz/index.html
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Welcome to Website 1!</title>
    </head>
    <body>
        <h1>入门小站!</h1>
    </body>
</html>

现在对 tooltt.com 重复上述步骤。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo vim /var/www/tooltt/index.html
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Welcome to Website 2!</title>
    </head>
    <body>
        <h1>tooltt.com!</h1>
    </body>
</html>

3.创建Nginx虚拟主机(Server Block)

要在sites-available目录中创建 Nginx 虚拟主机文件,请执行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo vim /etc/nginx/sites-available/rumenz.conf

需要注意的是,Nginx 虚拟主机配置文件可以任意命名,但通常情况下,使用域名是一个好习惯。

现在,将以下内容粘贴到你的虚拟主机文件中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
    listen 80;
    server_name  www.rumenz.com;
    root /var/www/rumenz;
    access_log /var/log/nginx/rumenz-access.log;
    error_log /var/log/nginx/rumenz-error.log;
}

为了让事情更清楚,让我们分解这个语法。以下是每个参数的含义:

  • listen: 指定 Nginx 服务器在哪个端口上侦听连接。
  • server_name: 在这里,我们匹配对我们域的请求。该指令包含我们要用于访问我们网站的域名列表。
  • root:我们存储网站文件的目录的位置。
  • error_log:我们存储此虚拟主机的所有错误日志的日志文件的完整路径。
  • access_log:我们存储此虚拟主机的所有访问日志的日志文件的完整路径。

现在我们可以使用我们的初始虚拟主机配置作为我们第二个文件的基础。只需复制它以创建一个新文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo cp /etc/nginx/sites-available/rumenz.conf /etc/nginx/sites-available/tooltt.conf

打开新文件并调整它以匹配我们的第二个 ( tooltt.com) 域名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo vim /etc/nginx/sites-available/tooltt.conf
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
    listen 80;
    server_name  www.tooltt,com;
    root /var/www/tooltt;
    access_log /var/log/nginx/tooltt-access.log;
    error_log /var/log/nginx/tooltt-error.log;
}

4. 启用 Nginx 虚拟主机(服务器块)

在测试之前我们需要做的最后一件事是启用虚拟主机。我们可以通过创建从文件到sites-enabled 目录的符号链接来做到这一点 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo ln -s /etc/nginx/sites-available/rumenz.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/tooltt.conf /etc/nginx/sites-enabled/

如下图所示,这些文件现在已链接到sites-enabled目录中。

将 Nginx 配置文件链接到启用站点的目录中

在我们继续之前,让我们仔细检查一下是否有任何错别字。测试 Nginx 配置的正确语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nginx -t

最后,如果没有发现问题,重启Nginx

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl restart nginx

5. 测试虚拟主机(可选)

为了测试 Nginx 虚拟主机,我们首先需要将我们的域名记录指向服务器的 IP 地址。在我们的例子中,服务器 IP 地址是192.168.122.101.

编辑/etc/hosts 文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /etc/hosts
192.168.122.101 rumenz.com
192.168.122.101 tooltt.com

完成后保存并关闭文件。以这种方式进行将允许我们测试我们实际上并不拥有的域。

现在打开浏览器输入www.rumenz.comwww.tooltt.com。你将分别看到两个域的索引页面。

6. 禁用 Nginx 虚拟主机

要在 Nginx 中禁用虚拟主机,我们只需要删除我们在启用虚拟主机文件时创建的符号链接。例如,要禁用tooltt.com,我们只需要执行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo rm -rf /etc/nginx/sites-enabled/tooltt.conf

要应用更改,我们必须重新启动 Nginx 服务器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl restart nginx
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Ubuntu 14.04 LTS系统中配置Apache2虚拟主机[通俗易懂]
安装apache服务器之后,让我们通过这个URL http://你的服务器的IP地址/ 来测试网站服务器是否正常工作 如果出现“It Worked!”的示例页,说明apache服务器已经开始工作了
全栈程序员站长
2022/10/02
1.2K0
ubuntu apache2配置详解(含虚拟主机配置方法)[通俗易懂]
在Windows下,Apache的配置文件通常只有一个,就是httpd.conf。但我在Ubuntu Linux上用apt-get install apache2命令安装了Apache2后,竟然发现它的httpd.conf(位于/etc/apache2目录)是空的!进而发现Ubuntu的 Apache软件包的配置文件并不像Windows的那样简单,它把各个设置项分在了不同的配置文件中,看起来复杂,但仔细想想设计得确实很合理。
全栈程序员站长
2022/09/07
4.6K0
CentOS 7 Apache 多端口部署 Web Apps 指南
转载自简书,原作者xuyan0,链接https://www.jianshu.com/p/b34c78bf9bf0,如有侵权,请联系删除
Arno
2019/12/04
1.2K0
apache虚拟主机配置
Apache是一种流行的Web服务器,它允许您在同一物理服务器上运行多个网站。通过配置虚拟主机,可以为每个网站提供独立的Web根目录和配置文件,从而实现多个网站在同一服务器上运行的能力。在本文中,我们将讨论如何在Apache中配置虚拟主机。
玖叁叁
2023/04/10
29.3K1
在 Ubuntu 上安装 Nginx
● nginx.service - A high performance web server and a reverse proxy server
JQ实验室
2025/05/07
1610
ubuntu下apache新建虚拟主机
最近发现在一个服务器上面布了一些项目,如果不用虚拟主机,用链接跳进去的话,有时候路径会出错,而自己在配置虚拟主机的时候又出现了一些问题,看似简单的东西,却花费了一上午,所以决定把简单的方法记下来,供和我一样的小白共勉
lin_zone
2018/08/15
1.9K1
ubuntu下apache新建虚拟主机
Mac OSX 下安装nginx mysql php 本地开发环境
温馨提示:本文的一些资源可能会因为gfw的原因无法正常安装,建议挂上科学上网工具进行部署。
李维亮
2021/07/09
1.8K0
Nginx如何添加虚拟主机
在sites-enabled内创建指向sites-available目录虚拟主机文件的软链接:
fanzhh
2019/08/20
1.8K0
linux apache2配置_虚拟主机开启ssl
* 操作系统:Ubuntu 5.10 * 测试机地址:10.39.6.59 * 测试机域名:*.firehare.com
全栈程序员站长
2022/10/02
1.5K0
5分钟学会在CentOS 8上安装Apache
Apache HTTP服务器是世界上使用最广泛的Web服务器。 它是一个免费的,开源的,跨平台的HTTP服务器,具有强大的功能,并且可以通过多种模块进行扩展。
星哥玩云
2022/08/08
3.2K0
5分钟学会在CentOS 8上安装Apache
如何在 Ubuntu 20.04 上设置 Apache 虚拟主机
一个虚拟主机是一段 Apache 配置指令,它允许你在一台单独的服务器上运行一个或者多个指令。通过 虚拟主机,你可以指定网站根目录(托管网站文件),每个网站创建一个独立的安全策略,使用不同的 SSL 证书,等等。
雪梦科技
2020/06/28
3K0
linux apache2配置_apache2.4安装教程
大家好,又见面了,我是你们的朋友全栈君。 一、安装: ubuntu 及debian 下的apahce 有点特别,如果使用apt-get 方式安装( apt-get install apache2 ) 则安装目录默认在 /etc/apache2 默认log在 /var/log/apache2/ (这个鸟地方让我找了好久) 二、配置文件说明 /etc/apache2/apache2.conf 此为apache2 的主配置文件 具体可参考 http://www.blogjava.net/duanzhimin528/archive/2010/03/05/314564.html /etc/apache2/ports.conf 此为apache2的端口配置文件,此处设置了apache2 需要监听的端口 使用 Linsten port 格式 /etc/apache2/httpd.conf 此为apache2的用户 “主” 配置文件,这里可以直接配置网站目录,也可以只写一些全局网站生效的设置,eg:目录权限。默认为空,即所有内容由虚拟主机配置文件(即单独的网站配置文件)设置。需要注意一点 针对虚拟主机,ServerName 项需要在这里设置(不同的虚拟主机–即网站不同),可以写多个,否则在启动服务器的时候会提示:apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName mods-available mods-enabled sites-available sites-enabled 以上几个目录作用见上文参考: 三、网站配置及多虚拟主机(网站) 此处可以分两种情况:第一 系统默认方式:即按照上面介绍的配置文件更改;第二 自定义修改方式; 假设我们需要添加一个新网站,端口8080 网站目录 /var/www/web_server2 方式一: 1、按照上面的说明配置: apache2.conf 不需要更改; ports.conf 添加 端口监听: NameVirtualHost *:8080 #此行不必须 Listen 8080 httpd.conf 添加 ServerName: ServerName 0.0.0.0:8080 #此处IP地址可以换成域名或者具体地址,ServerName 正常应该放到虚拟主机配置中,但实际测试发现不生效,必须写在这里; 配置虚拟主机(网站): cp sites-available/default sites-available/my_web_server2 #这里将默认的虚拟主机配置拷贝一份为my_web_server2(名字可以任取,建议和主机域名一致,不必和网站目录一致) 修改配置如下: NameVirtualHost *:8080 #此行不必须(默认是写在 ports.conf 中) <VirtualHost *:8080> ServerAdmin webmaster@localhost DocumentRoot /var/www/web_server2 #修改这里为实际网站目录 <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/web_server2/> #修改这里为实际网站目录 Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> …….. enable 网站: a2ensite my_web_server2 #my_web_server2 为sites-available/目录下的虚拟主机配置文件名(之前拷贝复制的) service apache2 reload sudo /etc/init.d/apache2 restart 确认网站启动: ls -l sites-enabled/ 有
全栈程序员站长
2022/10/02
2.2K0
Nginx 使用详解:搭建高性能的 Web 服务器
在互联网的世界里,Web 服务器是我们访问网站、获取信息的入口。Nginx(发音"engine x")作为一款轻量级、高性能的 Web 服务器和反向代理服务器,因其出色的性能和可扩展性而备受推崇。本文将围绕 Nginx 的使用进行详解,让你轻松掌握如何搭建高性能的 Web 服务器。
繁依Fanyi
2024/01/02
2.2K0
如何在CentOS 7上设置Apache虚拟主机
Apache Web服务器是在Internet上提供Web内容的最常用方式,将其功能和组件分解为可单独定制和配置的单个单元。描述单个站点或域的基本单元称为虚拟主机。虚拟主机允许一台服务器使用匹配系统托管多个域或接口。
爆栈工程师
2018/07/30
2.6K0
Apache基础教程:软件安装和故障排查
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行。由于其跨平台和安全性,被广泛使用,是最流行的Web服务器软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。在本教程中,我们将介绍一些管理Apache服务器的常用方法,包括停止,启动和启用服务,如何使用虚拟主机文件和目录,以及在服务器上查找重要文件和目录。
姚啊姚
2018/08/02
1.2K0
如何在Ubuntu 16.04上设置Nginx服务器块(虚拟主机)
使用Nginx Web服务器时,可以使用服务器块(类似于Apache中的虚拟主机)来封装配置详细信息,并从单个服务器托管多个域。
葡萄
2018/10/19
5K0
Nginx的安装和配置疑难解答
Nginx是一个免费的开源Web服务器,用于托管各种规模的网站和应用程序。该软件以其对内存资源的低影响,高可扩展性以及可提供安全,预测性能的模块化事件驱动架构而闻名。Nginx不仅仅是一个Web服务器,还可以用作负载均衡器,HTTP缓存和反向代理。
心语花束
2018/07/23
8910
安装与配置 Nginx:在 Ubuntu 上托管您的网站
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2024/08/14
5270
安装与配置 Nginx:在 Ubuntu 上托管您的网站
如何在一个Ubuntu 18.04服务器上将Nginx配置为Web服务器和Apache的反向代理
Apache和Nginx是目前比较流行的两种常用于PHP的开源Web服务器。当托管具有不同要求的多个网站时,在同一虚拟机上运行它们会很有用。在单个系统上运行两个Web服务器的一般解决方案是使用多个IP地址或不同的端口号。
挺问中原
2018/09/25
4.9K0
Nginx配置详解
Nginx 目录 $ cd /etc/nginx $ ls -l total 60 drwx------ 2 ubuntu ubuntu 4096 Jun 16 09:27 cert ## ssl证书目录 drwxr-xr-x 2 root root 4096 Jul 12 2017 conf.d -rw-r--r-- 1 root root 1077 Feb 11 2017 fastcgi.conf -rw-r--r-- 1 root root 1007 Feb 11
PM吃瓜
2019/08/13
9080
相关推荐
Ubuntu 14.04 LTS系统中配置Apache2虚拟主机[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验