У меня есть два поддомена, которые я хочу связать следующим образом:
https://suba.example.org/
- мой основной субдомен, https://subb.example.org/
- мой вторичный субдомен.
На suba у меня есть сервер, на котором запущено веб-приложение, subb предназначен только для перенаправления.
У этого сервера в suba есть URL-адрес, давайте назовем его https://suba.example.org/foo.php/bar
.
Все, что я хочу, это чтобы всякий раз, когда я набирал https: //subb.example.org/
в моем браузере отображается содержимое https://suba.example.org/foo.php/bar
, , но URL должен содержать https://subb.example.org/
.
На данный момент он будет правильно отображать содержание https://suba.example.org/foo .php / bar
, но браузер будет показывать URL-адрес содержимого, а не https://subb.example.org/
.
Я несколько раз перезапускал nginx-сервер и использовал окно в режиме инкогнито, чтобы убедиться, что браузер не кэширует никаких данных.
Происходит следующее:
https: // subb.example.org/
в окне Chrome в режиме инкогнито на моем рабочем столе: он покажет правильный вывод из https://suba.example.org/foo.php/bar
, ], но показывает https://suba.example.org/foo.php/bar
в строке URL https://subb.example.org/
в любом другом браузере / компьютере (включая окно инкогнито Chrome на другом компьютере): он покажет контент из https://suba.example.org/foo.php/bar
с https://subb.example.org
Панель URL, но только текст, без CSS или изображения. Как сайт 80-х.
pastebin.com/a6kfqhMn
Решением было перенаправить запросы CSS, графики и т. Д. На https://suba.example.org
.
Таким образом, моя новая конфигурация сайта для https://subb.example.org
выглядит следующим образом:
server {
listen 443 ssl;
root /config/www;
index index.html index.htm index.php;
### Server Name
server_name https://subb.exmaple.org;
### SSL Certificates
ssl_certificate /config/keys/letsencrypt/fullchain.pem;
ssl_certificate_key /config/keys/letsencrypt/privkey.pem;
### Diffie–Hellman key exchange
ssl_dhparam /config/nginx/dhparams.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
### Extra Settings
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
### Add HTTP Strict Transport Security
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header Front-End-Https on;
client_max_body_size 0;
location ^~ /core/ {
proxy_pass https://suba.exmaple.org;
}
location ^~ /apps/ {
proxy_pass https://suba.exmaple.org;
}
location ^~ /index.php/ {
proxy_pass https://suba.exmaple.org;
}
location / {
proxy_pass https://suba.exmaple.org/foo.php/bar;
}
}
Здесь часть с местоположением ^ ~ ...
вот чего не хватало.
Я знаю, что это не лучшая практика, так как мне пришлось просмотреть весь исходный код, чтобы найти, чего не хватает и что мне придется перенаправить.
Возможно, когда-нибудь кто-нибудь прочитает эти строки и подскажет мне лучший способ перенаправить реальное содержимое веб-сервера.
Но до тех пор это решение будет работать.