Gitea Docker版本 綁定自簽憑證by Nginx

當你的Gitea需要綁定SSL時有個快速做法 - 在前面由Nginx當作Proxy負責SSL綁定作業。

以下來教各位快速綁定流程,文章最後會提醒各位 注意事項

安裝nginx

sudo apt update
sudo apt install nginx

改gitea port

vi docker-compose.yml把

ports:
      - "80:3000"
      - "223:22"
ports:
      - "3000:3000"
      - "223:22"

nginx設定

編輯nginx設定檔 vi /etc/nginx/sites-available/default

server {
    listen 443 ssl;
    listen 80;
    server_name _;
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    client_max_body_size 100m;
    location / {
        proxy_http_version 1.1;
        proxy_pass http://127.0.0.1:3000;
        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 $http_x_forwarded_proto;

這個步驟就隨你們自由去操作,我的話是用SCP。

建立資料夾

mkdir /etc/nginx/ssl

搬移憑證檔案

把憑證檔案放到資料夾

mv ./cert.pem /etc/nginx/ssl/cert.pem
mv ./key.pem /etc/nginx/ssl/key.pem

重啟Nginx

nginx -t
systemctl restart nginx

測試綁定憑證結果

curl -k https://$ip

若有網頁內容即ok

怪了!怎麼有時候Git Clone不了?

最好是把 proxy_buffering開啟,避免如果git repo超過10MiB就可能被中斷

以下是我的配置設定,給各位參考。

        proxy_buffering on;
        proxy_buffer_size 32k;
        proxy_buffers 4 128k;
        proxy_busy_buffers_size 256k;
        proxy_max_temp_file_size 256k

在此提醒各位!

當你在Gitea前面掛一個Nginx當Proxy時,有時候會忘記前面還有一個Nginx,因為這是之前沒有Nginx,所以習慣只去Gitea查找問題,這是我之前蠻常忘記的盲點,所以當Gitea有什麼問題時,也要把Nginx考慮進去問題發生的原因唷!/images/emoticon/emoticon06.gif