在 Debian 上把 Swagger(如 Swagger UI / Swagger Editor)通过 Nginx 对外提供访问,通常有三种常见场景。下面按“最常用方案”给你一个清晰、可落地的集成方式。
✅ 简单、稳定、生产常用
/ → Swagger UI/api/ → 后端服务sudo apt update
sudo apt install nginx -y
验证:
systemctl status nginx
cd /var/www
sudo wget https://github.com/swagger-api/swagger-ui/archive/refs/tags/v5.17.14.zip
sudo apt install unzip -y
sudo unzip v5.17.14.zip
sudo mv swagger-ui-5.17.14 swagger-ui
编辑:
sudo nano /var/www/swagger-ui/dist/swagger-initializer.js
修改:
url: "https://your-domain.com/api/openapi.json",
或本地:
url: "/swagger/api.json",
新建配置文件:
sudo nano /etc/nginx/sites-available/swagger
示例(最常用):
server {
listen 80;
server_name swagger.example.com;
root /var/www/swagger-ui/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
# 后端 API
location /api/ {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
启用:
sudo ln -s /etc/nginx/sites-available/swagger /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
如果你用本地文件:
sudo cp openapi.json /var/www/swagger-ui/dist/api.json
Swagger UI 中:
url: "/api.json"
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d swagger.example.com
try_files 没写location /swagger/ {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
常见做法:
/v3/api-docs如果你能告诉我:
我可以给你 完全定制的 Nginx 配置。