Я использую nginx и обратный прокси, а также Docker контейнеры.
У меня есть два контейнера для докеров.
319f103c82e5 web_client_web_client "nginx -g 'daemon of…" 6 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp web_client
7636ddaeae99 admin_web_admin "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:6500->80/tcp, 0.0.0.0:7000->443/tcp web_admin
Это мои два контейнера. когда я ввожу http://website.com,, он переходит в контейнер web_client_web_client. Когда я ввожу http://website.com:6500,, он переходит в контейнер admin_web_admin. Это поток прямо сейчас.
Я хочу, чтобы мои администраторы не набирали http://website.com:6500, чтобы попасть на страницу администратора. Я предпочитаю, чтобы они набрали http://website.com/admin. Поэтому я решил использовать proxy_pass, что означает, что при доступе к http://website.com/admin, он должен proxy_pass к https://website.com:7000
Итак, сейчас я публикую конфигурацию nginx для web_client_web_client, поскольку она обрабатывает запросы на порты 80 и 433.
Вот оно:
server {
listen 80 default_server;
server_name website.com;
location / {
rewrite ^ https://$host$request_uri? permanent;
}
location /admin {
proxy_pass https://website.com:7000/;
}
# I also tried
#location /admin/ {
# proxy_pass https://website.com:7000/;
#}
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
}
server {
listen 443 ssl;
server_name website.com;
gzip on;
gzip_min_length 1000;
gzip_types text/plain text/xml application/javascript text/css;
ssl_certificate /etc/letsencrypt/live/website.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/website.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
root /usr/share/nginx/html;
location / {
add_header Cache-Control "no-store";
try_files $uri $uri/index.html /index.html;
}
location ~ \.(?!html) {
add_header Cache-Control "public, max-age=2678400";
try_files $uri =404;
}
}
Теперь, что происходит, это статические файлы (файлы css и js не загружаются) и при проверке из chrome запрос делается как https://website.com/static/css/app.597efb9d44f82f809fff1f026af2b728.css вместо https://website.com:7000/static/css/app.597efb9d44f82f809fff1f026af2b728.css. Так говорит 404 не найден. Я очень долго оборачиваюсь вокруг этого, и мне кажется глупым не понимать такую простую вещь.
Я ценю вашу помощь.