私のプロジェクトでは、Django と nginx を使用していますが、クラウド データベースを phpmyadmin を通じて管理したいと考えています。
Django は正常に動作していますが、localhost/phpmyadmin の nginx で実行したいのに、localhost:8080 の apache で実行されているため、phpmyadmin で同じことはできません。
docker-compose.ymlはこちらです
version: "3.9"
services:
web:
restart: always
build:
context: .
env_file:
- .env
volumes:
- ./project:/project
expose:
- 8000
nginx:
restart: always
build: ./nginx
volumes:
- ./static:/static
ports:
- 80:80
depends_on:
- web
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
environment:
PMA_HOST: <host_address>
PMA_USER: <user>
PMA_PASSWORD: <password>
PMA_PORT: 3306
UPLOAD_LIMIT: 300M
ports:
- 8080:80
および nginx default.conf
upstream django{
server web:8000;
}
server{
listen 80;
location / {
proxy_pass http://django;
}
location /pma/ {
proxy_pass http://localhost:8080/;
proxy_buffering off;
}
location /static/ {
alias /static/;
}
}
phpMyAdmin Docker コンテナのリバース プロキシとして nginx を動作させる方法を誰か教えていただければ幸いです。
重要な情報が不足している場合はお知らせください。
答え1
どのような悪影響が発生しているかは指定されていませんが、phpMyAdmin はリクエストを にルーティングするためにホスト ヘッダーを期待している可能性がありますPMA_HOST
。
プロキシ設定でホスト ヘッダーを渡してみることもできます。
location / {
proxy_pass http://localhost:8080/;
proxy_buffering off;
proxy_set_header Host $host;
}
アドバイス: PhpMyAdmin はセキュリティ面で有名ではありませんが、Web サーバーのログを見ると、phpMyadmin のインストールを見つけてさまざまな脆弱性をチェックしようとする試みが継続的に行われていることがわかります。
私の意見では、phpMyadmin は開発レベルのサービスであり、実稼働サーバーには使用すべきではありません。たとえば、MySQL Workbench やその他の適切な SQL クライアントを使用して、ホスト経由で SQL サーバーに SSH トンネルする方がはるかに安全です。