如何在虚拟专用服务器上配置 Nginx Web 服务器

这篇具有很好参考价值的文章主要介绍了如何在虚拟专用服务器上配置 Nginx Web 服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文档涵盖的是不再受支持的 Ubuntu 版本。如果您目前正在运行 Ubuntu 12.04 服务器,我们强烈建议升级或迁移到受支持的 Ubuntu 版本:

  • 升级到 Ubuntu 14.04
  • 从 Ubuntu 14.04 升级到 Ubuntu 16.04
  • 将服务器数据迁移到受支持的版本

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日到达生命周期终点(EOL),不再接收安全补丁或更新。本指南不再维护。

请参阅:
本指南可能仍然作为参考有用,但可能不适用于其他 Ubuntu 版本。如果可能的话,我们强烈建议使用适用于您使用的 Ubuntu 版本的指南。您可以使用页面顶部的搜索功能查找更新版本。

什么是 Nginx?

Nginx 是一个 Web 服务器和反向代理服务器。它已经被广泛采用,并正在取代许多其他常见选项。

虽然 Nginx 是一个强大的工具,但对于那些来自其他服务器或对 Web 服务器不熟悉的人来说,它的配置可能会令人生畏。在本指南中,我们将探讨主要的 Nginx 配置文件,并揭开一些语法和选项的神秘面纱。

我们将使用 Ubuntu 12.04 安装,但大多数发行版都将配置为具有类似的文件位置。

Nginx 配置目录层次结构

Nginx 将其配置文件存储在 “/etc/nginx” 目录中。

在此目录中,您将找到一些目录和各种模块化配置文件:

cd /etc/nginx
ls -F
conf.d/         koi-win           naxsi.rules   scgi_params       uwsgi_params
fastcgi_params  mime.types        nginx.conf    sites-available/  win-utf
koi-utf         naxsi_core.rules  proxy_params  sites-enabled/

如果您来自 Apache,“sites-available” 和 “sites-enabled” 目录将是熟悉的。

这些目录用于定义您的网站的配置。通常情况下,文件是在 “sites-available” 目录中创建的,然后在准备好上线时,通过符号链接到 “sites-enabled” 目录。

“conf.d” 目录也可以用于站点配置。在此目录中以 “.conf” 结尾的每个文件在 Nginx 启动时都会被读入配置,因此请确保每个文件定义有效的 Nginx 配置语法。

“/etc/nginx” 目录中的大多数其他文件包含特定进程或可选组件的配置详细信息。

但是,“nginx.conf” 文件是主要的配置文件。我们将更深入地探讨这个文件。

探索 nginx.conf 文件

nginx.conf 文件是 Nginx 的主要控制点。在服务器启动时,此文件会读取所有其他适当的配置文件,并将它们合并为一个单一的配置文件。

打开文件以讨论一般格式:

sudo nano /etc/nginx/nginx.conf
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {
. . .

前几行用于定义 Nginx 的一些一般事实。

例如,服务器通过 “user www-data” 行决定要以哪个用户运行。这是 Ubuntu 的典型 Web 服务器用户。

“pid” 指令指定了进程 pid 将存储在何处以供内部引用。“worker_processes” 定义了 Nginx 将使用的并发进程数。

配置文件的这一部分还可以包括使用 “error_log” 指令指定错误日志位置等内容。

文件的下一部分是 events 部分。这是一个特殊的位置,用于控制 Nginx 如何处理连接。在我们的示例中,我们不需要在此部分进行任何调整,因此我们将继续进行。

接下来的部分是 http 块。这导致了有关 Nginx 配置文件格式的更复杂的讨论。

Nginx 配置文件布局

Nginx 配置文件以 “块” 的形式进行管理。

我们看到的第一个块是 events 块。接下来是 http 块,这是配置文件中的主要层次结构的开始。

http 块中的配置细节是分层的,封闭块从其所在的块继承属性。Nginx 的大多数一般配置都在 http 块中进行,其中包含服务器块,服务器块又包含位置块。

重要的是,您应该始终将配置细节放入适用的最高容器中。这意味着,如果您希望参数 X 应用于每个服务器块,则将其放在 http 块内将导致其传播到每个服务器配置。

如果您查看我们的文件,您会注意到它具有许多选项,这些选项指示软件应该如何作为一个整体运行。这是这些指令的适当位置。

例如,我们设置了文件压缩选项:

gzip on;
gzip_disable "msie6";

这告诉 Nginx 启用 gzip 以压缩发送到客户端的数据,但在客户端是 Internet Explorer 6 时禁用 gzip 压缩,因为该浏览器不理解 gzip 压缩。

如果您有应该对某些服务器块具有不同值的选项,您可以在更高级别指定它们,然后在服务器块内覆盖它们。Nginx 将采用适用于设置的最低级别规范。

在最可能的最高级别应用设置的风格可以避免您管理多个相同声明。它还具有提供默认值的优势,可以在忘记在 “server” 块级别或以下声明某些内容时使用。

在 “nginx.conf” 文件中,我们可以看到 “http” 块的末尾有:

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

这告诉我们,定义特定站点和 URL 匹配位置的服务器和位置块将在此文件之外进行。

这使我们能够维护一个模块化的配置安排,我们可以在想要提供新站点时创建新文件。它允许我们将相关内容分组在一起,同时隐藏在大多数情况下不会更改的细节。

退出 “nginx.conf” 文件,以便我们在下一节中检查单个站点配置。

探索默认服务器块

Nginx 使用服务器块来实现 Apache 虚拟主机中找到的功能。将服务器块视为服务器可以托管的个别网站的规范。

我们将查看位于 “sites-available” 目录中的默认服务器块配置。此文件包含提供默认网页所需的所有必要信息。

cd sites-available
sudo nano default
server {
	root /usr/share/nginx/www;
	index index.html index.htm;

	server_name localhost;

	location / {
		try_files $uri $uri/ /index.html;
	}

	location /doc/ {
		alias /usr/share/doc/;
		autoindex on;
		allow 127.0.0.1;
		deny all;
	}
}

默认文件有很好的注释,但我在这里删除了注释以节省空间,并演示了站点定义可以多么简单。

我们有一个服务器块,包括在开放和相关闭合括号之间的所有内容:

server {
	. . .
}

通过使用 “include” 指令,此块被放置到 “nginx.conf” 文件中的 http 块末尾,如我们在上一节中讨论的那样。

“root” 指令定义了网站内容的目录。这是 Nginx 将开始查找浏览器请求的文件的位置。默认网站在 “/usr/share/nginx/www” 中搜索其内容。

请注意,每行都以分号(;)结束。这是 Nginx 知道一个指令已经结束,下一个指令将开始的方式。不要忘记分号,否则 Nginx 将把后续的行视为指令的附加参数。它会一直这样做,直到遇到分号。

接下来的一行涉及 “index” 指令。

这配置了域的默认页面。如果没有请求页面,服务器块将搜索名为 “index.html” 的文件并返回它。如果找不到该文件,它将尝试提供名为 “index.htm” 的文件。

使用 server_name 指令

“server_name” 指令包含将从此服务器块提供的域名列表。您可以包含任意多个名称,用空格分隔。

您还可以在服务器名称的开头或结尾使用星号字符作为匹配所有内容的通配符。例如,“*.example.com” 将匹配对 “forum.example.com” 和 “animals.example.com” 的请求。

如果请求的 URL 匹配多个 “server_name” 指令,它将首先选择完全匹配的那个。如果没有完全匹配,则它将选择以星号开头的最长通配符名称。

如果仍然没有找到匹配项,它将寻找以星号结尾的最长匹配通配符名称。如果找不到这些,它将返回第一个匹配的正则表达式匹配项。

使用正则表达式匹配的服务器名称以波浪号(~)字符开头。正则表达式非常强大,但超出了本文的范围。

使用位置块

配置文件的下一部分打开了一个位置块。位置块用于指定服务器内部如何处理某些资源请求。

“location /” 行指定括号内的指令将适用于客户端请求的所有不匹配其他位置块的资源。

位置块可以包含像文件中进一步指定的 “/doc/” 路径一样的 uri 路径,可以在位置和 uri 之间使用等号(=)指定精确匹配,或使用波浪号(~)字符指示正则表达式匹配。

纯波浪号表示区分大小写的匹配,后面跟着星号(*)表示不区分大小写的匹配,以及以插入符(^)开头的波浪号告诉 Nginx 如果 uri 匹配此位置,则不执行正则表达式搜索。

位置匹配类似于 server_name 匹配,Nginx 有一个明确定义的过程来决定使用哪个块。

如果查询与具有等号的位置匹配,将使用该位置并停止搜索。如果没有,则将搜索常规的文字 uri 位置。如果使用了插入符波浪号(^~),并且 uri 位置匹配,则将选择此块。

如果未使用该选项,它将选择最具体的匹配并保存该值。然后,它将执行正则表达式匹配,以查看是否可以匹配任何这些模式。如果找到一个,则使用正则表达式块。如果没有找到,则使用先前匹配的 uri 位置。

总之,Nginx 更喜欢精确匹配,然后是正则表达式匹配,然后是文字 URI 匹配,但可以通过在文字 URI 匹配之前加上 “^~” 来明确地使文字 URI 匹配更重要。

此列表定义了这些首选项:

  1. 等号匹配
  2. 具有 “^~” 的文字 URI 匹配
  3. 最具体的正则表达式匹配
  4. 最具体的文字 URI 匹配

尽管这可能看起来令人困惑,但这些定义的规则是必要的,以便 Nginx 可以做出无歧义的决定。

如何使用 try_files

try_files 指令是定义应尝试通过一系列备用选项来服务资源请求的非常有用的工具。

这意味着您可以声明您希望 Nginx 通过一系列备选选项来尝试服务请求。

默认配置文件中的示例是:

try_files $uri $uri/ /index.html;

这意味着当通过该位置块提供服务的请求时,Nginx 首先尝试将文字 uri 作为文件提供。这是使用 “$uri” 变量声明的,该变量将保存浏览器请求的资源。

如果没有与 $uri 的值匹配的文件,则它将尝试将 uri 作为目录。它将尝试为 uri 目录提供默认文件(如果您还记得的话,我们的是 index.html)。

如果没有与 $uri 的值匹配的目录,则它将使用默认文件,该文件是服务器块根目录中的 “index.html” 文件。每个 “try_files” 指令都使用最后一个参数作为备用默认值,因此它必须是已知的真实文件。

如果您不希望在前面的参数不匹配时返回文件,则可以返回错误页面。这是使用等号和错误代码来实现的。

例如,如果我们希望我们的 “location /” 块在找不到资源时返回 404 错误而不是提供默认的 “index.html” 页面,我们可以将最后一个文件替换为 “=404”:

try_files $uri $uri/ =404;

这将向用户返回适当的错误页面,如果他们请求一个不存在的资源。

其他选项

配置文件的其余部分包含一些其他有趣的指令。

“alias” 指令告诉 Nginx,该位置块的页面应该从指定的目录中提供。这些可以在根目录之外。

在我们的示例中,“/doc/” 中请求的资源将从 “/usr/share/doc/” 中提供。

“autoindex on” 指令允许 Nginx 为指定位置生成目录列表。当请求目录时,将返回此列表。

“allow” 和 “deny” 行为目录设置访问控制。我们文件中的行允许在尝试从本地服务器访问位置时读取内容。

结论

Nginx 对一些功能使用了不同的术语,但它是一个非常强大的服务器,具有许多配置选项。

学习如何正确配置 Nginx Web 服务器将使您能够充分利用一款既非常强大又资源消耗极低的软件。这使它成为任何规模网站的理想选择。文章来源地址https://www.toymoban.com/news/detail-859969.html

到了这里,关于如何在虚拟专用服务器上配置 Nginx Web 服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CentOS系统中如何配置Nginx作为静态HTTP服务器

    在CentOS系统中,Nginx是一个流行的Web服务器软件,它可以高效地提供静态HTTP服务。以下是在CentOS中配置Nginx作为静态HTTP服务器的步骤: 1. 安装Nginx 首先,您需要确保已安装Nginx。可以使用以下命令安装Nginx: bash 复制代码 sudo yum install nginx 2. 配置Nginx Nginx的配置文件位于 /etc

    2024年01月23日
    浏览(50)
  • nginx部署本地项目如何让异地公网访问?服务器端口映射配置!

    接触过IIS或apache的小伙伴们, 对 nginx 是比较容易理解的, nginx有点类似,又有所差异,在选择使用时根据自己本地应用场景来部署使用即可。通过一些对比可能会更加清楚了解: 1 . nginx是轻量级,比apache占用更少的内存以及资源 2 . apache对php支持较简单,apache组件比nginx多

    2024年02月16日
    浏览(68)
  • 如何在Windows server 2012配置Web服务器

    现在,我们浏览网页已经成为了一种常态,但是你知道网页是怎么运行的吗? 我们浏览网页,首先会打开浏览器,然后输入网页的地址(当然这里现在已经可以不用我们自己输入地址了,一般现在就是直接搜索,搜索出来我们点击的那个文字或者图片,其实就是我们网

    2024年02月02日
    浏览(43)
  • web服务器—nginx

    Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。和apache一样,都是web服务器软件,因为其性能优异,所以被广大运维喜欢。又因为nginx是一个轻量级的web服务器,相比apache来说 资源消耗更低 。

    2023年04月09日
    浏览(47)
  • OPENWRT 使用nginx作为web服务器

    在op上大家使用nginx作为web服务器,主要是为了其强大的反向代理功能,但op上的nginx官方做了一定的修改,配置上稍显复杂,几篇文章也是比较老的,配置也是一头雾水,作业都不好抄,索性自己查了资料学了些nginx的内容,实现了如下的功能: ####默认你已经完成 域名申请,

    2024年02月04日
    浏览(36)
  • 【Web服务器】Nginx常见问题(二)

    优化内容 设置方式 隐藏版本号 server_tokens off; 设置运行用户/组 方法一:配置文件中修改 user 用户组 组名; 方法二:编译时直接设置 页面缓存时间 expires 时间; 连接保持超时 keepalive_timeout 服务器超时时间 [客户端超时时间] ; 设置工作进程数 worker_processes auto/同CPU数量 ; worker

    2024年02月08日
    浏览(42)
  • Web服务器群集:Nginx网页及安全优化

    目录 一、理论 1.Nginx网页优化 2.Nginx安全优化 3.Nginx日志分割 二、实验 1.网页压缩 2.网页缓存 3.连接超时设置 4.并发设置 5.隐藏版本信息  6.脚本实现每月1号进行日志分割 7.防盗链 三、总结 (1)概述 在企业中,部署Nginx后只采用默认的配置参数,会引发网站很多问题,换言

    2024年02月13日
    浏览(45)
  • haproxy服务器对nginx服务器web服务调度负载均衡、用nfs做共享目录(脚本部署)

    目录 一、准备 二、在作为haproxy的服务器上导入以下shell执行haproxy安装 三、由于nginx服务需要用的nfs共享目录,先部署nfs 四、nginx服务器1部署 五、nginx服务器2部署同上 六、测试 一、准备 四台服务器 系统 IP 搭建服务器 centos7 192.168.1.12 haproxy centos7 192.168.1.132 nfs(rpcbind) ce

    2024年02月09日
    浏览(49)
  • Nginx:高性能的Web服务器与反向代理

    在现代互联网应用程序的开发和部署中,选择一个可靠、高性能的Web服务器是至关重要的。Nginx是一个备受推崇的选择,它以其卓越的性能和可靠性在开发者社区中享有盛誉。本文将介绍Nginx的概念、优势,以及如何使用Nginx作为Web服务器和反向代理。 Nginx(发音为“engine X”

    2024年02月19日
    浏览(63)
  • 在 【Linux Centos】下搭建 【Nginx Web】 服务器

    系统:Linux Centos 7.9 gcc 、c++、pcre、zlib、openssl等 添加内容

    2024年01月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包