在Ubuntu中使用nginx

1|0第一步:安装 Nginx


nginx 可以通过 apt 命令安装

sudo apt update sudo apt install nginx

选择 Y 来进行安装,apt 会把 nginx 和依赖安装到服务器中

2|0第二步:打开服务器端口


在使用 nginx 服务之前,我们需要查看服务器端口是否打开,如果没有打开需要打开 nginx 需要的端口。

Nginx 的 ufw 在安装时会把自身注册成为服务。

sudo ufw app list

输出结果:

root@miate:~$ sudo ufw app list Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

可以看到Nginx提供了三个配置文件:

  • Nginx Full

    开端口 80 正常,未加密的网络流量

    端口 443 TLS/SSL 加密的流量

  • Nginx HTTP

    仅打开端口 80 正常,未加密

  • Nginx HTTPS

    仅打开端口 443 TLS/SSL 加密

3|0第三步:检查 Web 服务器


在安装后, Ubuntu 会自动启动 Nginx。

可以使用 systemd 来检查系统状态

systemctl status nginx
root@miate:~$ systemctl status nginx nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2022-10-08 13:33:10 CST; 1h 40min ago Docs: man:nginx(8) Process: 997245 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 997255 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 997258 (nginx) Tasks: 3 (limit: 2264) Memory: 3.4M CGroup: /system.slice/nginx.service ├─997258 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─997259 nginx: worker process └─997260 nginx: worker process Oct 08 13:33:10 miate systemd[1]: Starting A high performance web server and a reverse proxy server... Oct 08 13:33:10 miate systemd[1]: Started A high performance web server and a reverse proxy server.

如上所示,这个服务已经成功启动。接下来我们要直接来测试 Nginx 是否可以通过浏览器访问。

首先执行以下命令:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

这可以让我们在浏览器中查看他们是否正常工作。

接着我们要找到服务器在公网上的ip,我们可以使用这个命令

curl -4 icanhazip.com

获得服务器ip后,我们可以在浏览器输入这个 ip 。当然除了公网,我们也可以输入主机的内网 ip 通过局域网来访问。

打开浏览器输入ip 就能看到 Nginx 的默认页面。这也说明服务器运行起来了。

4|0第4步:设置服务器块(Server block)


使用 Nginx Web 服务器时,服务器块(类似于 Apache 中的虚拟主机)可用于封装配置详细信息,并在一台服务器中托管多个域。我们将建立一个名为 example.com 的域,但我们可以用自己的域名替换它。

在 Ubuntu 上的 Nginx 默认情况下启用了一个服务器块(server block),服务器块的配置是为给服务器的目录提供地址 /var/www/html。尽管这对于单个站点非常有效,但是如果我们在服务器上托管多个站点,则可能变很臃肿。让我们给/var/www/html目录添加上分站点目录。

比如我们的网站是 example.com ,那我们创建一个对应的目录 example.com 目录:

sudo mkdir -p /var/www/example.com/html

接下来,使用 $USER 环境变量分配目录的所有权:

sudo chown -R $USER:$USER /var/www/example.com/html

如果我们没有修改自己的 umask 值,那么 Web 根目录的权限应该正确,我们可以通过输入以下命令来确认:

sudo chmod -R 755 /var/www/example.com

接下来,让我们来编辑 index.html 可以使用 nano 编辑器或其他你用这顺手的编辑器:

nano /var/www/example.com/html/index.html

在其中,添加以下示例HTML:/var/www/example.com/html/index.html

<html> <head> <title>Welcome to Example.com!</title> </head> <body> <h1>Success! The example.com server block is working!</h1> </body> </html>

接下来我们为 Nginx 来创建一个服务器块。与直接修改默认配置文件不同,我们在以下位置创建一个新文件:/etc/nginx/sites-available/example.com

sudo nano /etc/nginx/sites-available/example.com

粘贴到以下内容添加到文件中,这个块的配置与默认块的配置相似,但针对我们的新目录和域名进行了更新:/etc/nginx/sites-available/example.com

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; } }

接下来,让我们通过在 sites-enabled 目录新建一个链接,好让 Nginx 在启动过程中会读取这个目录:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

现在已启用并配置了两个服务器块,以及基于它们的 listenserver_name 指令响应请求:

  • example.com: 将会响应 example.comwww.example.com 的请求

  • default: 将会响应 80 端口的请求,以及不能匹配到两个服务器块上的请求

为避免可能由于添加其他服务器名称而引起的哈希存储区内存问题,有必要调整 /etc/nginx/nginx.conf 文件中的单个值。

打开文件:

sudo nano /etc/nginx/nginx.conf

找到 server_names_hash_bucket_size 指令并删除 # 符号:

... http { ... server_names_hash_bucket_size 64; ... } ...

接下来,测试以确保我们在 Nginx 文件中的改动,没有任何问题:

sudo nginx -t

如果没有任何问题,请重新启动 Nginx:

sudo systemctl restart nginx

5|0第 5 步:管理 Nginx


停止 Web 服务器:

sudo systemctl stop nginx

启动 Web 服务器:

sudo systemctl start nginx

重启 Web 服务器:

sudo systemctl restart nginx

只是修改配置,Nginx 可以在不终端的情况下热加载:

sudo systemctl reload nginx

默认情况下,Nginx 会在服务器启动时,跟随系统启动,如果我们不想这样,我们可以用这个命令来禁止:

sudo systemctl disable nginx

要重新让系统启动时引导 Nginx 启动,那么我们可以输入:

sudo systemctl enable nginx

6|0第 6 步 学习 Nginx 文件及目录结构


6|1内容

  • /var/www/html 默认的 Web 页面。默认打开可以看到 Nginx 页面。

  • /var/www/html 实际的 Web 内容。默认请看下只有 Nginx 自己的原生页面。我们可以通过更改 Nginx 配置来更改文件。

6|2服务器配置

  • /etc/nginx Nginx 配置目录。所有 Nginx 的配置文件都在这里。

  • /etc/nginx/nginx.conf Nginx 的配置文件。大多数全局配置可以通过这个文件来修改。

  • /etc/nginx/sites-available/sites-enabled 用来存储服务器下每个站点服务器块的目录。 默认情况下 Nginx 不会直接使用目录下的配置文件,需要我们更改配置来告诉 Nginx 来去读。

  • /etc/nginx/sites-enabled/sites-available 这里是存储已经启用站点服务器块的目录。

  • /etc/nginx/snippets 这个目录包含一些 Nginx 的配置文件。可打开详细查看这些配置文件到文档进行学习。

6|3服务器日志

  • /var/log/nginx/access.log 这里是 Nginx 到日志文件,对 Web 服务器的每个请求都会记录在这个日志中。

  • /var/log/nginx/error.log 记录 Nginx 运行过程中发生的错误日志。


__EOF__

本文作者幻秋
本文链接https://www.cnblogs.com/Miate/p/16710775.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   幻秋  阅读(2012)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示