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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章