apache httpd反向代理的妙用,QR code下載最新板
若需要製作QR Code 裡面放永久連結, 讓人家可以下載最新版本程式,
這時候可以使用 httpd 的反向代理, ,導到最新版本實際網址即可
ProxyPass /getLatestFile https://x.x.x.x/download/1.7.apk
若需要製作QR Code 裡面放永久連結, 讓人家可以下載最新版本程式,
這時候可以使用 httpd 的反向代理, ,導到最新版本實際網址即可
ProxyPass /getLatestFile https://x.x.x.x/download/1.7.apk
在tomcat server裡, 程式專案預設放在 webapps 目錄底下, 假設專案為 guacamole.
程式會放在 webapps/guacamole , 網址則為 http(s)://x.x.x.x/guacamole
若想直接輸入 http(s)://x.x.x.x , 自動引導入到 http(s)://x.x.x.x/guacamole , 則必須在 webapps 建立ROOT目錄, 以及在ROOT目錄下, 建立 index.html , index.htm, 或 index.jsp 這三種任一種welcome 檔案.
docker 容器的酪梨醬(guacamole 1.4.0 版本), tomcat 設定檔案在 /home/guacamole/tomcat 底下, 請建立一個含以下內容的 tomcat/webapps/ROOT/index.html 檔案即可.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; url='https://x.x.x.x/guacamole'" />
</head>
<body>
<p>Please follow <a href="https://x.x.x.x/guacamole">this link</a>.</p>
</body>
</html>
一般來說有些需要保護的web service,可以躲到httpd proxy背後, 好處如下:
這些在背後的service 通常只要讓httpd proxy 知道該service本地端的ip&port 就能存取, 並且晉升https的行列,非常方便.
基本上調整如下:
<VirtualHost *:443> ServerName xxx.yyy.com ErrorLog /var/log/httpd/ssl_error_log1 TransferLog /var/log/httpd/ssl_access_log1 SSLEngine On SSLProxyEngine On SSLCertificateFile /etc/letsencrypt/live/xxx.yyy.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/xxx.yyy.com/privkey.pem SSLCACertificateFile /etc/letsencrypt/live/xxx.yyy.com/fullchain.pem ProxyPass / http://zzz.yyy.com.tw:80/ ProxyPassReverse / http://zzz.yyy.com:80/ </VirtualHost>
以上設定若是遇到網址是%2F, 通常都會出問題,
這是slash html encode的問題, apache預設不支援該編碼, 因此可以加上 AllowEncodeSlashes 與 nocanon
<VirtualHost *:443> AllowEncodedSlashes on ProxyPass / http://zzz.yyy.com.tw:80/ nocanon ProxyPassReverse / http://zzz.yyy.com:80/ nocanon </VirtualHost>
新版安裝方式請到這裡查看
-------------------以下是舊版安裝方式-------------------
建立volume
docker volume create nextcloud-www docker volume create nextcloud-app docker volume create nextcloud-config docker volume create nextcloud-data docker volume create nextcloud-theme
確認 mariadb 資料庫伺服器是否準備好
執行docker指令
docker run -d -p <對應的port>:80 -v nextcloud-www:/var/www/html -v nextcloud-app:/var/www/html/custom_apps -v nextcloud-config:/var/www/html/config -v nextcloud-data:/var/www/html/data -v nextcloud-theme:/var/www/html/themes/mycustom --link <docker資料庫名稱>:mysql -e MYSQL_DATABASE=nextcloud -e MYSQL_USER=root -e MYSQL_PASSWORD=<密碼> -e MYSQL_HOST=mysql --restart=always --name nextcloud nextcloud
若有apache或是nginx作為反向proxy, 將https帶到nextcloud, 需設定trust_domain(網站會提醒)
httpd設定
# for CalDav RewriteEngine On RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L] RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
# form redirect <VirtualHost *:80> ServerName <server name> Redirect permanent / https://<server name>/ </VirtualHost> <VirtualHost *:443> # form security <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule> </VirtualHost>
nextcloud config設定
若使用httpd proxy 的方式需要加入以下設定, 以免登入轉圈圈無法進入頁面, 修改 config.php 檔案
'overwritehost' => '<主機名稱>', 'overwriteprotocol' => 'https',
執行command
docker exec --user www-data <CONTAINER_ID> php occ 例入遇到上傳檔案失敗, 或是一些檔案錯誤可執行 docker exec --user www-data <container id> php occ files:scan --all
本篇文章提供建立docker環境時, 所需要的步驟以及注意事項!
往後本站使用docker安裝之相關教學文件, 亦以本篇為基礎建設文章.
安裝docke所建議之母體作業系統為 CentOS 7.x , 以及 apache httpd 2.4.x 網站反向代理伺服器!
(1) 10002_(CentOS)如何安裝docker套件.txt
(2) 10007_(CentOS)如何取得LetsEncrypt加密證書.txt