Docker安裝Redmine並使用Nginx反向代理為https

天外狂人發表於2020-01-25

1.部署docker環境

安裝後最好配置為國內源,此步略過,網上教程很多。

2.部署資料庫環境

這裡直接使用宿主機內現有的mysql資料庫,就不用再安裝了。

使用以下sql語句建立資料庫和資料庫使用者。

CREATE DATABASE IF NOT EXISTS redmine DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'redmine'@'172.17.0.%' IDENTIFIED BY '123456';
GRANT all privileges ON redmine.* TO 'redmine'@'172.17.0.%';
FLUSH PRIVILEGES;

3.安裝redmine容器

mkdir -p /data/redmine/files
docker run --name redmine -d \
-p 12000:3000 \
-v /data/redmine/files:/usr/src/redmine/files:z \
-e REDMINE_DB_MYSQL=172.17.0.1 \
-e REDMINE_DB_PORT=3306 \
-e REDMINE_DB_DATABASE=redmine \
-e REDMINE_DB_USERNAME=redmine \
-e REDMINE_DB_PASSWORD=123456 \
-e TZ="Asia/Shanghai" \
--restart=always \
redmine:4.1.0

其中12000埠可以自己指定,為宿主機的埠,對映到容器的3000埠,容器的3000埠為redmine訪問埠。

4.配置nginx反向代理

    server {
        listen 443 ssl;
        ssl on;
        server_name redmine.xxx.com;
        #配置ssl證照路徑,自行設定
        ssl_certificate      /etc/letsencrypt/live/xxx.com/fullchain.pem;
        #配置ssl金鑰路徑,自行設定
        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/;
            client_max_body_size 100m;
            proxy_redirect off;
            #下面這一步一定要加上埠號,否則如果使用非443埠,網站在ajax請求之後會跳轉到錯誤的頁面(會不帶埠號)
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $http_connection;
            proxy_http_version 1.1;
            #下面這一行配置也要加上,否則ajax請求之後會跳轉到錯誤的頁面(https會變成http)
            proxy_set_header X-Forwarded-Proto $scheme;
            index index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

 

 

相關文章