Docker安装Guacamole并使用Nginx反向代理为https

1.部署docker环境

安装后最好配置为国内源,此步略过,网上教程很多。

2.部署数据库环境

这里直接使用宿主机内现有的mysql数据库,就不用再安装了。

接着,创建guacamole数据库,编码用utf8即可。

再运行以下命令,生成数据库脚本,脚本的作用是创建需要的表和一个默认管理员用户。

docker run --rm guacamole/guacamole:1.0.0 /opt/guacamole/bin/initdb.sh --mysql > initdb.sql

在数据库中运行此脚本。

然后在MySql中创建guacamole数据库用户,并且拥有对guacamole数据库的增删改查权限。

3.安装guacd

docker run --name guacd -d \
-e TZ="Asia/Shanghai" \
--restart=always \
guacamole/guacd:1.0.0

4.安装guacamole

docker run --name guacamole  \
--link guacd:guacd  \
-e MYSQL_HOSTNAME=172.17.0.1  \
-e MYSQL_DATABASE=guacamole  \
-e MYSQL_USER=guacamole  \
-e MYSQL_PASSWORD=密码用自己设置的  \
-d  \
-p 12000:8080  \
-e TZ="Asia/Shanghai" \
--restart=always \
guacamole/guacamole:1.0.0

5.配置nginx反向代理

    server {
        listen 443 ssl;
        ssl on;
        server_name guacamole.xxx.com;
        ssl_certificate      /etc/letsencrypt/live/xxx.com/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/xxx.com/privkey.pem;
        ssl_session_timeout  5m;
        ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers  on;
        location / {
            proxy_pass http://127.0.0.1:12000/guacamole/;
            proxy_buffering off;
            proxy_http_version 1.1;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $http_connection;
            proxy_cookie_path /guacamole/ /;
            access_log off;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

配置可根据需求更改。

6.更改server.xml配置

如果不进行这一步配置,那么guacamole中,所有关于ip地址的记录(如每次浏览器中发起连接就会记录浏览器的ip),都会是nginx服务器的地址,而不是浏览器客户端的实际地址。

将配置文件复制出来

docker cp guacamole:/usr/local/tomcat/conf/server.xml ./
vi ./server.xml

在最下方的<host>标签中加入

<Valve className="org.apache.catalina.valves.RemoteIpValve"
               internalProxies="172.17.0.1"
               remoteIpHeader="x-forwarded-for"
               remoteIpProxiesHeader="x-forwarded-by"
               protocolHeader="x-forwarded-proto" />

172.17.0.1为nginx所在服务器的ip地址

再将配置文件替换回去

docker cp ./server.xml guacamole:/usr/local/tomcat/conf/server.xml

重启容器

docker restart guacamole

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 Docker Compose 中安装配置 Nginx 来实现 HTTPS反向代理,你可以按照以下步骤进行操作: 1. 首先,在你的项目目录下创建一个名为 `docker-compose.yml` 的文件,并添加以下内容: ```yaml version: '3' services: nginx: image: nginx ports: - 80:80 - 443:443 volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./certs:/etc/nginx/certs ``` 这将创建一个名为 `nginx` 的服务,并将容器的 80 和 443 端口映射到主机的相应端口。同时,我们将挂载一个自定义的 `nginx.conf` 配置文件和一个名为 `certs` 的文件夹用于存放 SSL/TLS 证书。 2. 在项目目录下创建一个名为 `nginx.conf` 的配置文件,并添加以下内容作为示例: ```nginx events {} http { server { listen 80; server_name example.com; location / { proxy_pass http://backend:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/certs/cert.pem; ssl_certificate_key /etc/nginx/certs/key.pem; location / { proxy_pass http://backend:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } ``` 这是一个简单的 Nginx 配置文件示例,其中设置了一个 HTTP 的反向代理和一个 HTTPS反向代理。你需要将 `example.com` 替换为你的域名,并将 SSL/TLS 证书文件 `cert.pem` 和 `key.pem` 放入 `certs` 文件夹中。 3. 在你的项目目录下创建一个名为 `certs` 的文件夹,并将正确的 SSL/TLS 证书文件放入其中。 4. 现在,你可以运行 `docker-compose up -d` 命令启动容器。 这样,Nginx 将通过反向代理将所有对于 `example.com` 的请求转发到名为 `backend` 的服务的 8000 端口上。同时,通过 HTTPS 访问时,Nginx 使用了提供的 SSL/TLS 证书来进行加密通信。 请注意,上述步骤只是一个示例,你可能需要根据你的实际需求进行修改和调整。希望这能帮到你!如果有任何进一步的问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值