初冬微寒 發表於 2022-1-6 16:50:00

Ubuntu 中安装和配置 Nginx

<p>原文:如何在 Ubuntu 20.04 中安装和配置 Nginx - 卡拉云 (kalacloud.com)</p>
<h2 id="前言" class="mdx-components__H2-sc-4qlcyf-1 fYswZM">前言</h2>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">Nginx 是全球使用最广泛的 web servers 之一。它甚至负责托管互联网上一些超级大流量的网站也不在话下。很多情况下,它比 Apache 占用更少资源,并且可以使用它作为 Web 服务器或反向代理来使用。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">在本教程中,我们要学习如何在 Ubuntu 20.04 中安装和配置 Nginx。</p>
<h2 id="准备工作" class="mdx-components__H2-sc-4qlcyf-1 fYswZM">准备工作</h2>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">要根据本教程学习,首先我们要有一台安装好 Ubuntu 20.04 的服务器:</p>
<ul>
<li>有 sudo 的 root 用户权限,大家可根据《Ubuntu 120.04初始服务器设置》(撰写中,稍后上线)指南来配置自己的服务器。</li>
</ul>
<h2 id="第-1-步安装-nginx" class="mdx-components__H2-sc-4qlcyf-1 fYswZM">第 1 步:安装 Nginx</h2>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">由于 Nginx 可以从 ubuntu 软件源中获得,因此我们可以使用 apt 来安装 Nginx。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">我们可以使用以下命令安装 Nginx 到 Ubuntu 中。</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo <span class="token function">apt update
<span class="token function">sudo <span class="token function">apt <span class="token function">install nginx</span></span></span></span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">选择 Y 来开始安装,apt 会帮你把 Nginx 和它所必备的依赖安装到我们的服务器中。</p>
<h2 id="第-2-步调整防火墙" class="mdx-components__H2-sc-4qlcyf-1 fYswZM">第 2 步:调整防火墙</h2>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">在测试 Nginx 之前,我们需要调整防火墙,让他允许 Nginx 服务通过。Nginx&nbsp;<code class="language-text">ufw</code>&nbsp;在安装时会把他自身注册成为服务。</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo ufw app list</span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">输出结果:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash">kalacloud@chuan-server:~$ <span class="token function">sudo ufw app list
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH</span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">你可以看到 Nginx 提供了三个配置文件:</p>
<ul>
<li>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><strong>Nginx Full</strong></p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">开端口80 正常,未加密的网络流量</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">端口443 TLS / SSL加密的流量</p>
</li>
<li>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><strong>Nginx HTTP</strong></p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">仅打开端口80 正常,未加密</p>
</li>
<li>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><strong>Nginx HTTPS</strong></p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">仅打开端口443 TLS / SSL加密</p>
</li>
</ul>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">我们使用 Nginx HTTP 来做本教程演示。</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo ufw allow <span class="token string">'Nginx HTTP'</span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">我们用以下命令来查看更改结果</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo ufw status</span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">我们可以在输出结果中看到</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash">Status: active

To                         Action      From
--                         ------      ----
OpenSSH                  ALLOW       Anywhere                  
Nginx HTTP               ALLOW       Anywhere                  
OpenSSH <span class="token punctuation">(v6<span class="token punctuation">)               ALLOW       Anywhere <span class="token punctuation">(v6<span class="token punctuation">)            
Nginx HTTP <span class="token punctuation">(v6<span class="token punctuation">)            ALLOW       Anywhere <span class="token punctuation">(v6<span class="token punctuation">)</span></span></span></span></span></span></span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><span class="gatsby-resp-image-wrapper"><span class="gatsby-resp-image-background-image"><source srcset="/static/08d0d83820cc1790b1de1952067a432c/59d6e/nginx.webp 180w,/static/08d0d83820cc1790b1de1952067a432c/a3012/nginx.webp 360w,/static/08d0d83820cc1790b1de1952067a432c/bc514/nginx.webp 720w,/static/08d0d83820cc1790b1de1952067a432c/260c2/nginx.webp 1080w,/static/08d0d83820cc1790b1de1952067a432c/92f8c/nginx.webp 1200w" sizes="(max-width: 720px) 100vw, 720px" type="image/webp"><source srcset="/static/08d0d83820cc1790b1de1952067a432c/e9ff0/nginx.png 180w,/static/08d0d83820cc1790b1de1952067a432c/f21e7/nginx.png 360w,/static/08d0d83820cc1790b1de1952067a432c/37523/nginx.png 720w,/static/08d0d83820cc1790b1de1952067a432c/302a4/nginx.png 1080w,/static/08d0d83820cc1790b1de1952067a432c/c1b63/nginx.png 1200w" sizes="(max-width: 720px) 100vw, 720px" type="image/png"><img src="https://kalacloud.com/static/08d0d83820cc1790b1de1952067a432c/37523/nginx.png" alt="Nginx" class="mdx-components__Image-sc-4qlcyf-3 hGYUvQ gatsby-resp-image-image" title="Nginx" loading="lazy"></span></span></p>
<h2 id="第3步检查我们的-web-服务器" class="mdx-components__H2-sc-4qlcyf-1 fYswZM">第3步:检查我们的 Web 服务器</h2>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">在安装结束后,Ubuntu 会启动 Nginx 。 Web 服务器应该已经在运行了。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">我们可以通过&nbsp;<code class="language-text">systemd</code>&nbsp;来检查 init 系统状态,确保它正在运行:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash">systemctl status nginx</code></pre>
</div>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash">kalacloud@chuan-server:~$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded <span class="token punctuation">(/lib/systemd/system/nginx.service<span class="token punctuation">; enabled<span class="token punctuation">; vendor preset:<span class="token operator">&gt;
   Active: active <span class="token punctuation">(running<span class="token punctuation">) since Wed <span class="token number">2020-07-29 07:21:53 UTC<span class="token punctuation">; 23min ago
       Docs: man:nginx<span class="token punctuation">(<span class="token number">8<span class="token punctuation">)
   Main PID: <span class="token number">3340 <span class="token punctuation">(nginx<span class="token punctuation">)
      Tasks: <span class="token number">2 <span class="token punctuation">(limit: <span class="token number">2248<span class="token punctuation">)
   Memory: <span class="token number">4.3M
   CGroup: /system.slice/nginx.service
             ├─3340 nginx: master process /usr/sbin/nginx -g daemon on<span class="token punctuation">; master_<span class="token operator">&gt;
             └─3341 nginx: worker process

Jul <span class="token number">29 07:21:52 chuan-server systemd<span class="token punctuation">[<span class="token number">1<span class="token punctuation">]: Starting A high performance web server<span class="token operator">&gt;
Jul <span class="token number">29 07:21:53 chuan-server systemd<span class="token punctuation">[<span class="token number">1<span class="token punctuation">]: Started A high performance web server <span class="token operator">&gt;
lines <span class="token number">1-13/13 <span class="token punctuation">(END<span class="token punctuation">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">如上所示,这个服务已经成功启动。接下来我们要直接来测试 Nginx 是否可以通过浏览器访问。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">首先我们执行以下命令:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">ip addr show eth0 <span class="token operator">| <span class="token function">grep inet <span class="token operator">| <span class="token function">awk <span class="token string">'{ print $2; }' <span class="token operator">| <span class="token function">sed <span class="token string">'s/\/.*$//'</span></span></span></span></span></span></span></span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">这可以让我们在浏览器中查看他们是否正常工作。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">接着我们要找到服务器在公网上的ip,我们可以使用这个命令</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">curl -4 icanhazip.com</span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">获得服务器ip后,我们可以在浏览器输入这个 ip 。当然除了公网,我们也可以输入主机的内网 ip 通过局域网来访问。</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash">http://your_server_ip</code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">打开浏览器输入ip 就能看到 Nginx 的默认页面。这也说明服务器运行起来了。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><span class="gatsby-resp-image-wrapper"><span class="gatsby-resp-image-background-image"><source srcset="/static/cd4fb03cb23b7ad3d4a3fd5ad3efb041/59d6e/nginxserver.webp 180w,/static/cd4fb03cb23b7ad3d4a3fd5ad3efb041/a3012/nginxserver.webp 360w,/static/cd4fb03cb23b7ad3d4a3fd5ad3efb041/4e18f/nginxserver.webp 574w" sizes="(max-width: 574px) 100vw, 574px" type="image/webp"><source srcset="/static/cd4fb03cb23b7ad3d4a3fd5ad3efb041/e9ff0/nginxserver.png 180w,/static/cd4fb03cb23b7ad3d4a3fd5ad3efb041/f21e7/nginxserver.png 360w,/static/cd4fb03cb23b7ad3d4a3fd5ad3efb041/86389/nginxserver.png 574w" sizes="(max-width: 574px) 100vw, 574px" type="image/png"><img src="https://kalacloud.com/static/cd4fb03cb23b7ad3d4a3fd5ad3efb041/86389/nginxserver.png" alt="Nginx Server" class="mdx-components__Image-sc-4qlcyf-3 hGYUvQ gatsby-resp-image-image" title="Nginx Server" loading="lazy"></span></span></p>
<blockquote>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">这里推荐一下可与 Nginx 搭配使用的卡拉云。卡拉云是一套低代码开发工具,可接入常见的数据库(MySQL、MongoDB等)及 RESTful API, 你无需懂会任何前端技术,只要会写 SQL,就可以快速搭建属于你自己的数据库管理工具。&gt;&gt;&nbsp;深入了解卡拉云&nbsp;&lt;&lt;</p>
</blockquote>
<h2 id="第-4-步管理-nginx" class="mdx-components__H2-sc-4qlcyf-1 fYswZM">第 4 步:管理 Nginx</h2>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">现在,您已启动并运行了Web服务器,让我们回顾一些基本的管理命令。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">上一步,我们已经启动起来 Web 服务器了。接下来,让我们来学习一下 Nginx 的基本命令。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">要停止Web服务器,输入:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo systemctl stop nginx</span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">要在停止时,启动Web服务器,键入:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo systemctl start nginx</span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">要停止,然后再次启动该服务,键入:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo systemctl restart nginx</span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">如果我们只是修改配置,Nginx 可以在不终端的情况下热加载。我们可以键入:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo systemctl reload nginx</span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">默认情况下,Nginx 会在服务器启动时,跟随系统启动,如果我们不想这样,我们可以用这个命令来禁止:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo systemctl disable nginx</span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">要重新让系统启动时引导 Nginx 启动,那么我们可以输入:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo systemctl <span class="token builtin class-name">enable nginx</span></span></code></pre>
<div class="postBody">
<div id="cnblogs_post_body" class="blogpost-body blogpost-body-html">
<ul>
<li>nginx重启报错:nginx: invalid PID number "" in "/run/nginx.pid"</li>
<li>问题描述:执行 nginx -t 是OK的,然而在执行 nginx -s reload 的时候报错</li>
</ul>
<p>    nginx: invalid PID number “” in “/run/nginx.pid”</p>
<ul>
<li>解决办法</li>
</ul>
<p>    需要先执行</p>
<p>    nginx -c&nbsp;/etc/nginx/nginx.conf</p>
<p>    nginx.conf文件的路径可以从nginx -t的返回中找到。</p>
<p>    nginx -s reload</p>
</div>
</div>
<pre class="language-bash"><code class="language-bash"><span class="token function"><span class="token builtin class-name">&nbsp;</span></span></code></pre>
</div>
<h2 id="第5步设置服务器块server-block" class="mdx-components__H2-sc-4qlcyf-1 fYswZM">第5步:设置服务器块(Server block)</h2>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">使用Nginx Web服务器时,<em>服务器块</em>(类似于Apache中的虚拟主机)可用于封装配置详细信息,并在一台服务器中托管多个域。我们将建立一个名为&nbsp;<strong>example.com</strong>&nbsp;的域,但我们可以<strong>用自己的域名替换它</strong>。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">在 Ubuntu 上的 Nginx 默认情况下启用了一个服务器块(server block),服务器块的配置是为给服务器的目录提供地址&nbsp;<code class="language-text">/var/www/html</code>。尽管这对于单个站点非常有效,但是如果我们在服务器上托管多个站点,则可能变很臃肿。让我们给<code class="language-text">/var/www/html</code>目录添加上分站点目录。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">比如我们的网站是 example.com ,那我们创建一个对应的目录 example.com 目录:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo <span class="token function">mkdir -p /var/www/example.com/html</span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">接下来,使用<code class="language-text">$USER</code>环境变量分配目录的所有权:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo <span class="token function">chown -R <span class="token environment constant">$USER<span class="token builtin class-name">:<span class="token environment constant">$USER /var/www/example.com/html</span></span></span></span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">如果我们没有修改自己的<code class="language-text">umask</code>值,那么 Web 根目录的权限应该正确,我们可以通过输入以下命令来确认:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo <span class="token function">chmod -R <span class="token number">755 /var/www/example.com</span></span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">接下来,让我们来编辑<code class="language-text">index.html</code>&nbsp;可以使用 nano 编辑器或其他你用这顺手的编辑器:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">nano /var/www/example.com/html/index.html</span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">在其中,添加以下示例HTML:</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">/var/www/example.com/html/index.html</p>
<div class="gatsby-highlight" data-language="html">
<pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;html<span class="token punctuation">&gt;
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;head<span class="token punctuation">&gt;
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;title<span class="token punctuation">&gt;Welcome to Example.com!<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/title<span class="token punctuation">&gt;
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/head<span class="token punctuation">&gt;
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;body<span class="token punctuation">&gt;
      <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;h1<span class="token punctuation">&gt;Success!The example.com server block is working!<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/h1<span class="token punctuation">&gt;
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/body<span class="token punctuation">&gt;
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/html<span class="token punctuation">&gt;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">完成后保存并关闭文件。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">接下来我们为 Nginx 来创建一个服务器块。与直接修改默认配置文件不同,我们在以下位置创建一个新文件:<code class="language-text">/etc/nginx/sites-available/example.com</code></p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo <span class="token function">nano /etc/nginx/sites-available/example.com</span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">粘贴到以下内容添加到文件中,这个块的配置与默认块的配置相似,但针对我们的新目录和域名进行了更新:</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">/etc/nginx/sites-available/example.com</p>
<div class="gatsby-highlight" data-language="html">
<pre class="language-html"><code class="language-html">server {
      listen 80;
      listen [::]:80;
      root /var/www/example.com/html;
      index index.html index.htm index.nginx-debian.html;
      server_name example.com www.example.com;
      location / {
                try_files $uri $uri/ =404;
      }
}</code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">接下来,让我们通过在<code class="language-text">sites-enabled</code>目录新建一个链接,好让 Nginx 在启动过程中会读取这个目录:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo <span class="token function">ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/</span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">现在已启用并配置了两个服务器块,以及基于它们的<code class="language-text">listen</code>和<code class="language-text">server_name</code>指令响应请求:</p>
<ul>
<li><code class="language-text">example.com</code>: 将会响应<code class="language-text">example.com</code>&nbsp;和&nbsp;<code class="language-text">www.example.com</code>的请求</li>
<li><code class="language-text">default</code>: 将会响应 80 端口的请求,以及不能匹配到两个服务器块上的请求</li>
</ul>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">为避免可能由于添加其他服务器名称而引起的哈希存储区内存问题,有必要调整<code class="language-text">/etc/nginx/nginx.conf</code>文件中的单个值。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">打开文件:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo <span class="token function">nano /etc/nginx/nginx.conf</span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">找到<code class="language-text">server_names_hash_bucket_size</code>指令并删除<code class="language-text">#</code>符号:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token punctuation">...
http <span class="token punctuation">{
    <span class="token punctuation">...
    server_names_hash_bucket_size <span class="token number">64<span class="token punctuation">;
    <span class="token punctuation">...
<span class="token punctuation">}
<span class="token punctuation">...</span></span></span></span></span></span></span></span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">完成后保存并关闭文件。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">接下来,测试以确保我们在 Nginx 文件中的改动,没有任何问题:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo nginx -t</span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">如果没有任何问题,请重新启动 Nginx:</p>
<div class="gatsby-highlight" data-language="bash">
<pre class="language-bash"><code class="language-bash"><span class="token function">sudo systemctl restart nginx</span></code></pre>
</div>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">Nginx 现在已经可以按照刚刚我们配置的方式来工作啦。当用户通过<code class="language-text">http://example.com</code>域名访问我们的服务器时,Nginx 会将它指向我们刚刚创建的 Html 页面。</p>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><span class="gatsby-resp-image-wrapper"><span class="gatsby-resp-image-background-image"><source srcset="/static/9170eb70f68c7a8bb217f59642a884e0/59d6e/nginx-02.webp 180w,/static/9170eb70f68c7a8bb217f59642a884e0/a3012/nginx-02.webp 360w,/static/9170eb70f68c7a8bb217f59642a884e0/0ba47/nginx-02.webp 640w" sizes="(max-width: 640px) 100vw, 640px" type="image/webp"><source srcset="/static/9170eb70f68c7a8bb217f59642a884e0/4ec73/nginx-02.jpg 180w,/static/9170eb70f68c7a8bb217f59642a884e0/158ba/nginx-02.jpg 360w,/static/9170eb70f68c7a8bb217f59642a884e0/c08c5/nginx-02.jpg 640w" sizes="(max-width: 640px) 100vw, 640px" type="image/jpeg"><img src="https://kalacloud.com/static/9170eb70f68c7a8bb217f59642a884e0/c08c5/nginx-02.jpg" alt="Nginx教程" class="mdx-components__Image-sc-4qlcyf-3 hGYUvQ gatsby-resp-image-image" title="Nginx教程" loading="lazy"></span></span></p>
<h2 id="第-6-步-学习-nginx-文件及目录结构" class="mdx-components__H2-sc-4qlcyf-1 fYswZM">第 6 步 学习 Nginx 文件及目录结构</h2>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav">到这一步,我们已经学会了如何在 Ubuntu 上安装和配置 Nginx 服务。接下来,我们来学习 Nginx 的文件及目录结构。</p>
<h2 id="内容" class="mdx-components__H2-sc-4qlcyf-1 fYswZM">内容</h2>
<ul>
<li>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><code class="language-text">/var/www/html</code>&nbsp;默认的 Web 页面。默认打开可以看到 Nginx 页面。</p>
</li>
<li>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><code class="language-text">/var/www/html</code>&nbsp;实际的 Web 内容。默认请看下只有 Nginx 自己的原生页面。我们可以通过更改 Nginx 配置来更改文件。</p>
</li>
</ul>
<h2 id="服务器配置" class="mdx-components__H2-sc-4qlcyf-1 fYswZM">服务器配置</h2>
<ul>
<li>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><code class="language-text">/etc/nginx</code>&nbsp;Nginx 配置目录。所有 Nginx 的配置文件都在这里。</p>
</li>
<li>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><code class="language-text">/etc/nginx/nginx.conf</code>&nbsp;Nginx 的配置文件。大多数全局配置可以通过这个文件来修改。</p>
</li>
<li>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><code class="language-text">/etc/nginx/sites-available/sites-enabled</code>&nbsp;用来存储服务器下每个站点服务器块的目录。 默认情况下 Nginx 不会直接使用目录下的配置文件,需要我们更改配置来告诉 Nginx 来去读。</p>
</li>
<li>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><code class="language-text">/etc/nginx/sites-enabled/sites-available</code>&nbsp;这里是存储已经启用站点服务器块的目录。</p>
</li>
<li>
<p class="mdx-components__Paragraph-sc-4qlcyf-0 flZSav"><code class="language-text">/etc/nginx/snippets</code>&nbsp;这个目录包含一些 Nginx 的配置文件。可打开详细查看这些配置文件到文档进行学习。</p>
</li>
</ul>
<h2 id="服务器日志" class="mdx-components__H2-sc-4qlcyf-1 fYswZM">服务器日志</h2>
<ul>
<li><code class="language-text">/var/log/nginx/access.log</code>&nbsp;这里是 Nginx 到日志文件,对 Web 服务器的每个请求都会记录在这个日志中。</li>
<li><code class="language-text">/var/log/nginx/error.log</code>&nbsp;记录 Nginx 运行过程中发生的错误日志。</li>
</ul><br><br>
来源:https://www.cnblogs.com/zhang1f/p/15771853.html
頁: [1]
查看完整版本: Ubuntu 中安装和配置 Nginx