Настройка server_protocol
Добрый день.
У меня почему-то настройка server_protocol работает наизнанку:
1. Если там поставить http, то [[++site_url]] будет выдавать адрес с httpS
2. Если там поставить httpS, то [[++site_url]] будет выдавать адрес с http
Причем в первом случае админка работает по протоколу https, а сайт по http. Может где кеш какой хитрый?
Подскажите, где исправить и как?)))
У меня почему-то настройка server_protocol работает наизнанку:
1. Если там поставить http, то [[++site_url]] будет выдавать адрес с httpS
2. Если там поставить httpS, то [[++site_url]] будет выдавать адрес с http
Причем в первом случае админка работает по протоколу https, а сайт по http. Может где кеш какой хитрый?
Подскажите, где исправить и как?)))
Комментарии: 11
Я недавно переводил сайт на https. Тоже помучался с настройкой через MODX. Главное, я не смог найти, где эта настройка «server_protocol» используется, а [[++site_url]] всегда выдавал http. Плюнул и указал в base адрес напрямую через https и настроил редирект в NGINX на https. Всё работает.
Методом проб и ошибок понял алгоритм перехода на https. Напишу, может кому пригодится:
1. Генерируем сертификат. Это прямое отношение к MODX не имеет. Делается на стороне сервера.
2. В админке MODX в Системных настройках находим параметр server_protocol и указываем ему значение https.
3. В файле .htaccess настраиваем правило для https:
После этих манипуляций сайт переходит на https.
1. Генерируем сертификат. Это прямое отношение к MODX не имеет. Делается на стороне сервера.
2. В админке MODX в Системных настройках находим параметр server_protocol и указываем ему значение https.
3. В файле .htaccess настраиваем правило для https:
RewriteCond %{SERVER_PORT} !^443
RewriteRule (.*) https://site.ru/$1 [R=301,L]
4. Проверяем работоспособность скриптов, потому что может случиться так, что необходимо например jquery грузить не через http, а через https (если загрузка идет со стороннего сайта). И так с другими скриптами.После этих манипуляций сайт переходит на https.
Сергей, а как указать адрес напрямую с https? На гланой понятно, а на внутренних какая комбинация используется?
https://[[~id]]?
В теге base прописать адрес сайта href=«https:/site.ru/» вместо href="[[+site_url]]". Этот адрес должен быть прописан на всех страницах сайта.
Да, сделал так как вы сказали, но почему-то не работают все внутренние страницы? отдают 404 ошибку…
Этот тег отвечает за относительные адреса в ссылках, путях картинок и т.п. Он не влияет на адрес внутренних страниц. Видимо где-то сломана переадресация.
А может такая беда быть из-за неправильных настроек nginx?
Вот сейчас такие настройки у меня:
Вот сейчас такие настройки у меня:
server {
server_name site.ru www.site.ru;
charset off;
index index.php;
disable_symlinks if_not_owner from=$root_path;
include /etc/nginx/vhosts-includes/*.conf;
include /etc/nginx/vhosts-resources/site.ru/*.conf;
access_log /var/www/httpd-logs/site.ru.access.log;
error_log /var/www/httpd-logs/site.ru.error.log notice;
ssi on;
set $root_path /var/www/XXX/data/www/site.ru;
root $root_path;
listen xxx.xxx.xxx.xx:80;
location / {
location ~ [^/]\.ph(p\d*|tml)$ {
try_files /does_not_exists @fallback;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
try_files $uri $uri/ @fallback;
}
location / {
try_files /does_not_exists @fallback;
}
}
location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080 /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
access_log off;
}
gzip on;
gzip_comp_level 6;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
return 301 https://$host:443$request_uri;
}
server {
server_name site.ru www.site.ru;
ssl on;
ssl_certificate "/var/www/httpd-cert/XXX/site.ru_le1.crtca";
ssl_certificate_key "/var/www/httpd-cert/XXX/site.ru_le1.key";
ssl_ciphers XXXXX+XXXXXX:XXX+XXXXXX:XXXXXX+XXXXX:XXXXXX+XXX;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
add_header Strict-Transport-Security "max-age=31536000;";
charset off;
index index.php;
disable_symlinks if_not_owner from=$root_path;
include /etc/nginx/vhosts-includes/*.conf;
include /etc/nginx/vhosts-resources/site.ru/*.conf;
access_log /var/www/httpd-logs/site.ru.access.log;
error_log /var/www/httpd-logs/site.ru.error.log notice;
ssi on;
set $root_path /var/www/XXX/data/www/site.ru;
root $root_path;
listen xxx.xxx.xxx.xx:443;
gzip on;
gzip_comp_level 6;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
location / {
location ~ [^/]\.ph(p\d*|tml)$ {
try_files /does_not_exists @fallback;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
try_files $uri $uri/ @fallback;
}
location / {
try_files /does_not_exists @fallback;
}
}
location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080 /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
access_log off;
}
}
Это не ко мне. Это как если бы спросил про влияние планеты Нептун на рождаемость сурикатов в неволе.
Я тоже сделал как Сергей и стал париться.
Тема снова стала актуальной. На другом сайте столкнулся с такой же проблемой. Кто подскажет, как гарантированно избавиться от этой мороки? Почему настройки server_protokol не соответствуют тому, что выводит [[++site_url]]
Почему настройки server_protokol не соответствуют тому, что выводит [[++site_url]]Потому что эта настройка нигде не используется.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.