插件窝 干货文章 Nginx代理Partainer如何使用

Nginx代理Partainer如何使用

Portainer Nginx 配置 proxy 423    来源:    2025-04-24

使用Nginx代理Portainer的配置指南

Portainer是一个轻量级的Docker管理界面,通过Nginx代理可以增加安全性和灵活性。以下是配置步骤:

基本代理配置

  1. 安装Nginx(如果尚未安装):

    sudo apt update
    sudo apt install nginx
    
  2. 创建Nginx配置文件(例如 /etc/nginx/sites-available/portainer.conf):

    server {
       listen 80;
       server_name portainer.yourdomain.com; # 替换为你的域名
    
       location / {
           proxy_pass http://localhost:9000; # Portainer默认端口
           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;
       }
    }
    
  3. 启用配置

    sudo ln -s /etc/nginx/sites-available/portainer.conf /etc/nginx/sites-enabled/
    sudo nginx -t # 测试配置
    sudo systemctl reload nginx
    

HTTPS配置(推荐)

  1. 获取SSL证书(使用Let's Encrypt):

    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d portainer.yourdomain.com
    
  2. 自动生成的HTTPS配置类似于:

    server {
       listen 443 ssl;
       server_name portainer.yourdomain.com;
    
       ssl_certificate /etc/letsencrypt/live/portainer.yourdomain.com/fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live/portainer.yourdomain.com/privkey.pem;
    
       location / {
           proxy_pass http://localhost:9000;
           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 {
       listen 80;
       server_name portainer.yourdomain.com;
       return 301 https://$host$request_uri;
    }
    

高级配置选项

  1. 添加基本认证

    sudo apt install apache2-utils
    sudo htpasswd -c /etc/nginx/.htpasswd username
    

    然后在Nginx配置中添加:

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.htpasswd;
    
  2. WebSocket支持(Portainer需要):

    location / {
       # ...其他配置...
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
    }
    
  3. 自定义路径(不使用根路径):

    location /docker-admin/ {
       proxy_pass http://localhost:9000/;
       # ...其他代理设置...
    }
    

注意事项

  1. 确保Portainer已正确安装并运行在默认的9000端口
  2. 如果使用Docker运行Portainer,确保端口映射正确: bash docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
  3. 防火墙设置需要允许Nginx的端口(通常是80和443)
  4. 配置完成后,通过你的域名(如https://portainer.yourdomain.com)访问Portainer

验证配置

  1. 检查Nginx配置: bash sudo nginx -t
  2. 重启Nginx: bash sudo systemctl restart nginx
  3. 检查Portainer和Nginx日志以排查问题: bash journalctl -u nginx -f docker logs portainer

这样配置后,Portainer将通过Nginx代理提供更安全的访问方式,并可以轻松添加SSL加密和其他安全功能。