15%

Alexhost 满足您的愿望

参与调查 并赢得奖品

09.10.2024

如何让 Nginx 服务器监听多个端口

Nginx 是一个多功能的网络服务器和反向代理,可以配置为监听多个端口,使其适合从同一个 服务器 提供不同的网站、应用程序或服务。配置 Nginx 监听多个端口对于在不同端口上提供不同内容或支持 HTTP(端口 80)和 HTTPS(端口 443)等服务非常有用。本指南将向您展示如何配置 Nginx 以监听多个端口。

Telegram 高级账户赠送活动

立即加入
Telegram Premium Star Star

先决条件

  • 一台安装并运行 Nginx 的服务器。
  • 具有修改 Nginx 配置文件的 root 或 sudo 权限。
  • 对 Nginx 配置文件(nginx.conf 和特定站点配置文件)有基本了解。

基本 Nginx 配置概述

Nginx 的配置文件通常位于 /etc/nginx/nginx.conf 或特定站点配置的 /etc/nginx/sites-available/ 中,具体取决于 Linux 发行版。监听端口的主要指令是 listen,它指定了 Nginx 应该监听的 IP 地址和端口。

步骤 1:打开 Nginx 配置文件

要配置 Nginx 监听多个端口,您需要编辑 Nginx 配置文件。使用您喜欢的文本编辑器打开文件:

sudo nano /etc/nginx/nginx.conf

或者,如果您正在编辑特定站点配置:

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

步骤 2:添加多个 listen 指令

要使 Nginx 监听多个端口,您可以在服务器块中添加多个 listen 指令。以下是一个监听端口 80 和 8080 的服务器块示例:

server {
listen 80;
listen 8080;
server_name example.com;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}

在此配置中:

  • listen 80; 指示 Nginx 在端口 80 上监听 HTTP 请求。
  • listen 8080; 指示 Nginx 在端口 8080 上监听 HTTP 请求。

这意味着对 http://example.com:80 和 http://example.com:8080 的请求都将由此服务器块处理。

步骤 3:使用多个端口配置 HTTPS

如果您想在不同的端口(例如 8443)上启用 HTTPS,可以像这样配置:

server {
listen 443 ssl;
listen 8443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}

在此配置中:

  • listen 443 ssl; 使 Nginx 在默认端口 443 上监听 HTTPS 请求。
  • listen 8443 ssl; 使 Nginx 在端口 8443 上监听 HTTPS 请求。
  • SSL 证书和密钥路径(ssl_certificate 和 ssl_certificate_key)用于启用 HTTPS。

步骤 4:验证配置

在进行更改后,验证 Nginx 配置是否有语法错误至关重要。运行:

sudo nginx -t

如果输出显示语法正常,则配置正确。

步骤 5:重启 Nginx

要应用更改,请重启 Nginx:

sudo systemctl restart nginx

或者,如果您的系统使用服务:

sudo service nginx restart

步骤 6:测试配置

要验证 Nginx 是否正确监听多个端口:

  1. 检查监听端口:使用 netstat 或 ss 验证 Nginx 是否在指定端口上监听:
    sudo netstat -tuln | grep nginx

    或者:
    sudo ss -tuln | grep nginx

    这将显示 Nginx 正在监听的端口列表。您应该看到端口 8080804438443 的条目。
  2. 访问服务器:打开您的网络浏览器,尝试使用不同的端口访问服务器:
    • http://example.com
    • http://example.com:8080
    • https://example.com
    • https://example.com:8443

    如果配置正确,您应该看到相同的内容。

高级:为不同端口设置不同内容

您可以根据端口配置不同的内容。例如,为每个端口提供不同的根目录:

server {
listen 80;
server_name example.com;
root /var/www/html80;
index index.html;location / {
try_files $uri $uri/ =404;
}
}

server {
listen 8080;
server_name example.com;
root /var/www/html8080;
index index.html;location / {
try_files $uri $uri/ =404;
}
}

在此示例中:

  • 对 http://example.com(端口 80)的请求将提供来自 /var/www/html80 的内容。
  • 对 http://example.com:8080 的请求将提供来自 /var/www/html8080 的内容。

结论

配置 Nginx 监听多个端口使您能够提供不同的服务,支持自定义设置或在网络架构中提供灵活性。无论您需要 Nginx 处理多个 HTTP 和 HTTPS 端口,还是将不同端口指向不同内容,Nginx 的 listen 指令都使设置变得简单。只需确保验证您的配置,重启 Nginx,并测试每个端口以确保一切按预期工作。

15%

Alexhost 满足您的愿望

参与调查 并赢得奖品