ubuntu 安装并配置 nginx

liujie
liujie
发布于 2023-04-21 / 18 阅读
0
0

ubuntu 安装并配置 nginx

ubuntu 安装并配置 nginx

安装

  1. 确保已经安装了更新的软件包

使用以下命令更新软件包:

sudo apt update
sudo apt upgrade
  1. 安装 Nginx

使用以下命令安装 Nginx:

sudo apt install nginx
  1. 启动 Nginx

安装完成后,使用以下命令启动 Nginx:

sudo systemctl start nginx
  1. 设置 Nginx 开机自启

使用以下命令设置 Nginx 开机自启:

sudo systemctl enable nginx
  1. 配置防火墙

如果防火墙已启用,请添加 Nginx 的规则以允许传入的 HTTP 和 HTTPS 流量。例如,使用以下命令允许 HTTP 流量:

sudo ufw allow 'Nginx HTTP'
  1. 验证安装

在完成以上步骤后,您可以在 Web 浏览器中访问您的服务器的公共 IP 地址或域名。如果一切都设置正确,您应该能够看到 Nginx 欢迎页面。

设置 nginx 反向代理

若要设置 Nginx 反向代理,请执行以下步骤:

  1. 打开 Nginx 配置文件

使用以下命令打开 Nginx 的默认配置文件:

sudo nano /etc/nginx/sites-available/default
  1. 配置反向代理

在 "server" 块中添加以下内容:

location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

在这个例子中,我们配置了一个反向代理,将所有请求转发到本地的端口 3000 上。

  1. 保存和退出

保存文件并退出编辑器。

  1. 重新加载 Nginx

使用以下命令重新加载 Nginx:

sudo systemctl reload nginx
  1. 验证反向代理

使用 Web 浏览器访问您的服务器的公共 IP 地址或域名,检查是否已正确设置反向代理。

好了,现在您已经成功地设置了一个反向代理。

例如:下面是一个基于第一点的示例:

假设你有两个网站,分别是example.com和example.net,你想要为每个网站创建一个单独的配置文件。可以按照以下步骤操作:

  1. 在/etc/nginx/sites-available目录下创建两个新的配置文件,分别为example.com和example.net,可以使用以下命令创建:

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

在这些文件中,可以按照需要定义每个网站的配置,例如:

server {
    listen 80;
    listen [::]:80;

    server_name example.com;
    root /var/www/example.com/public;

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

一个真实的含https、websocket 的反向代理配置

# 设置 websocket 
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
    listen 443 ssl;
    # 博客域名
    server_name  www.robotai.cc robotai.cc; 

    access_log off;
    ssl_certificate /etc/nginx/sites-available/cert/robotai-cc/robotai-cc.pem;  
    ssl_certificate_key /etc/nginx/sites-available/cert/robotai-cc/robotai-cc.key; 
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #表示使用的加密套件的类型。
    #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; 
    ssl_prefer_server_ciphers on;
    location / {
        proxy_pass http://127.0.0.1:3002$request_uri;
        # proxy_set_header  Host $http_host;
        proxy_set_header  X-Real-IP $remote_addr;
        client_max_body_size  10m;
        add_header Content-Security-Policy "upgrade-insecure-requests";
        proxy_set_header X-Forwarded-Proto  $scheme;
        # 开启 websocket 
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $host;
    }
}
server {
    listen 80;
    server_name www.robotai.cc robotai.cc;
    rewrite ^(.*)$ https://$host$1;
    location / {
        #root   html;
        #index  index.html index.htm;
        # mtons 博客
        # proxy_pass  http://127.0.0.1:8070;
        # chatpad
        proxy_pass  http://127.0.0.1:3002;
        proxy_read_timeout 5m;
        # 开启 websocket 
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $host; 
    }
}
  1. 在/etc/nginx/sites-enabled目录下创建符号链接,将它们链接到sites-available目录中的配置文件:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example.net /etc/nginx/sites-enabled/
  1. 重启nginx服务器:

sudo systemctl restart nginx

现在,每个网站都有自己的配置文件,可以更方便地管理它们。如果需要禁用其中一个网站,只需从sites-enabled目录中删除对应的符号链接即可。如果需要更新某个网站的配置,只需编辑相应的配置文件,然后重新加载nginx配置即可。

/etc/nginx/sites-available 和 /etc/nginx/sites-available 目录区别,规范是什么

这两个目录是nginx默认配置文件存放的位置,但在使用中有不同的用途:

  • /etc/nginx/sites-available目录:该目录包含所有nginx的虚拟主机配置文件,每个文件对应一个虚拟主机。这些文件是可用的,但不一定被激活,即nginx服务器不会读取这些文件。在这个目录下创建配置文件,并在需要时通过符号链接(软链接)将其链接到/etc/nginx/sites-enabled目录中,即可激活该虚拟主机。

  • /etc/nginx/sites-enabled目录:该目录包含nginx服务器激活的虚拟主机配置文件的符号链接。nginx服务器只会读取这个目录下的配置文件链接。在这个目录中创建任何文件或配置都是无效的,只有在/etc/nginx/sites-available目录中创建文件并使用符号链接将其链接到这个目录中才能使用。

因此,规范是将所有的虚拟主机的配置文件放在/etc/nginx/sites-available目录中,使用符号链接将需要激活的虚拟主机配置文件链接到/etc/nginx/sites-enabled目录中。这样可以方便地管理和维护虚拟主机的配置

如何验证nginx 配置文件

可以使用下面的命令验证 Nginx 配置文件是否正确:

sudo nginx -t

该命令会检查 Nginx 配置文件的语法和结构是否正确,如果一切正常,会输出以下内容:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

查看nginx log

要查看 Nginx 的日志,可以使用以下命令来打开 Nginx 的错误日志文件:

sudo tail -f /var/log/nginx/error.log

该命令将显示 Nginx 错误日志文件的最后几行内容,并在文件更新时自动更新。如果你想查找特定的错误消息,可以使用 grep 命令来过滤日志文件中的内容,例如:

sudo tail -f /var/log/nginx/error.log | grep "404"

该命令将只显示包含 "404" 的错误日志。


评论