部署 Web 服务
从 IP:端口 到域名访问: 部署 Web 服务的整指南
在开发和部署 Web 服务时,我们常常从在本地或服务器上运行一个监听特定端口的应用开始。但是,为了让用户更方便地访问,我们需要将这个 IP:端口 组合转换为一个易记的域名。本文将详细介绍这个过程,包括域名设置、SSL 证书配置和 Nginx 反向代理的设置。
步骤 1: 准备工作
一个运行中的 Web 服务 (本例中假设运行在
http://localhost:5001
)一个域名 (本例中使用
api.rui-nnovation.cool
)一个具有公网 IP 的服务器
对服务器的 root 或 sudo 访问权限
步骟 DNS 设置
登录您的域名注册商或 DNS 提供商的控制面板。
为您的域名添加一个 A 记录,指向您服务器的公地址。
主机名: api
类型: A
值: 您服务器的公网 IP
步骤 3: 安装和配置 Nginx
安装 Nginx:
sudo apt update sudo apt install nginx
启动 Nginx 并设置为开机自启:
sudo systemctl start nginx sudo systemctl enable nginx
步骤 4: 配置 SSL 证书
我们将使用 Let's Encrypt 提供免费的 SSL 证书。
安装 Certbot:
sudo apt install certbot python3-certbot-nginx
获取并安装证书:
sudo certbot --nginx -d api.rui-nnovation.cool
按照提示完成证书的申请和安装。
如果证书过期了,使用
可以使用 acme.sh
进行证书更新:
acme.sh --renew -d [domain]
这条命令将手动更新指定域名的 SSL 证书。
步骤 5: 配置 Nginx 反向代理
编辑 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/default
用以下配置替换文件内容:
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } } server { listen 443 ssl; listen [::]:443 ssl ipv6only=on; server_name api.rui-nnovation.cool; ssl_certificate /etc/letsencrypt/live/api.rui-nnovation.cool/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/api.rui-nnovation.cool/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; location / { proxy_pass http://127.0.0.1:5001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } server { if ($host = api.rui-nnovation.cool) { return 301 https://$host$request_uri; } listen 80; listen [::]:80; server_name api.rui-nnovation.cool; return 404; }
这个配置做了以下几件事:
将所有 HTTP 流量重定向到 HTTPS
设置 SSL 证书
将 HTTPS 请求代理到本地运行的服务 (127.0.0.1:5001)
保存文件并退出编辑器。
测试 Nginx 配置:
sudo nginx -t
如试成功,重新加载 Nginx:
sudo systemctl reload nginx
步骤 6: 防火墙设置
确保您的防火墙允许 HTTP (80) 和 HTTPS (443) 流量:
sudo ufw allow 'Nginx Full'
步骤 7: 验证
现在,您应该能够通过 https://api.rui-nnovation.cool
访问您的 Web 服务了。
Last updated