Настройка server_protocol Новый


Добрый день.
У меня почему-то настройка server_protocol работает наизнанку:
1. Если там поставить http, то [[++site_url]] будет выдавать адрес с httpS
2. Если там поставить httpS, то [[++site_url]] будет выдавать адрес с http
Причем в первом случае админка работает по протоколу https, а сайт по http. Может где кеш какой хитрый?
Подскажите, где исправить и как?)))
31 октября 2016, 17:07    Андрей   
3    408 0

Комментарии (11)

  1. Сергей Шлоков 31 октября 2016, 22:37 # 0
    Я недавно переводил сайт на https. Тоже помучался с настройкой через MODX. Главное, я не смог найти, где эта настройка «server_protocol» используется, а [[++site_url]] всегда выдавал http. Плюнул и указал в base адрес напрямую через https и настроил редирект в NGINX на https. Всё работает.
    1. Андрей 01 ноября 2016, 11:03 # 0
      Методом проб и ошибок понял алгоритм перехода на 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.
      1. Андрей 10 ноября 2016, 21:39 # 0
        Сергей, а как указать адрес напрямую с https? На гланой понятно, а на внутренних какая комбинация используется?
        https://[[~id]]
        ?
        1. Сергей Шлоков 10 ноября 2016, 22:57 # 0
          В теге base прописать адрес сайта href=«https:/site.ru/» вместо href="[[+site_url]]". Этот адрес должен быть прописан на всех страницах сайта.
          1. Андрей 11 ноября 2016, 10:33 # 0
            Да, сделал так как вы сказали, но почему-то не работают все внутренние страницы? отдают 404 ошибку…
            1. Сергей Шлоков 11 ноября 2016, 21:38 # 0
              Этот тег отвечает за относительные адреса в ссылках, путях картинок и т.п. Он не влияет на адрес внутренних страниц. Видимо где-то сломана переадресация.
              1. Андрей 11 ноября 2016, 22:07 # 0
                А может такая беда быть из-за неправильных настроек 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;
                	}
                }
                1. Сергей Шлоков 11 ноября 2016, 22:15 # 0
                  Это не ко мне. Это как если бы спросил про влияние планеты Нептун на рождаемость сурикатов в неволе.
      2. Роман Садоян 31 октября 2016, 22:56 # 0
        Я тоже сделал как Сергей и стал париться.
        1. Андрей 10 ноября 2016, 21:37 # 0
          Тема снова стала актуальной. На другом сайте столкнулся с такой же проблемой. Кто подскажет, как гарантированно избавиться от этой мороки? Почему настройки server_protokol не соответствуют тому, что выводит [[++site_url]]
          1. Сергей Шлоков 10 ноября 2016, 22:54 # 0
            Почему настройки server_protokol не соответствуют тому, что выводит [[++site_url]]
            Потому что эта настройка нигде не используется.
          Вы должны авторизоваться, чтобы оставлять комментарии.