httpd reverse proxy 需要注意的設定
一般來說有些需要保護的web service,可以躲到httpd proxy背後, 好處如下:
- 比較安全, 尤其是老舊的web service,
- 統一由httpd proxy 保管SSL證書很方便
這些在背後的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>