Задать вопрос
BanterFace
@BanterFace
jack of all trades, master of none

Как понять способ переадресации сайта с http на https?

Исходные данные: ubuntu 14.04; странная связка apache и nginx, поставленная не мной; веста; хостящийся на всём этом phpBB 3.2; упорный новичок без денег на фрилансера чтобы всё это пофиксить (=я).
Предыстория: ssl-сертификат был поставлен с помощью acmetool, webroot. До этого, более традиционные и популярные программы (certbot, letsencrypt) не срабатывали, потому что не могли найти файл в well-known, хотя он открывался из браузера.

Проблема 1: при загрузке сайта по https, появляется ошибка "mixed content", т.е. часть файлов подгружается по http (из-за их путей).
Проблема 2: неизвестен механизм переадресации с http на https: просмотрев конфиги nginx и apache (и отключая куски кода для проверки гипотез)(оба приложены ниже), я не обнаружил хоть чего-то, влияющего на переадресацию. .htaccess тоже не содержит ничего влияющего.
Проблема 3: при открытии файлов, которые загружались по http по их http адресу в браузере, мы переадресовываемся на https.

Решение, на которое я рассчитываю: найти способ переадресации, который действует сейчас, отключить его, применить что-нибудь традиционное, вроде записи в .htaccess.

Вскрываемся:
nginx.conf

# Server globals
user                    www-data;
worker_processes        auto;
worker_rlimit_nofile    65535;
error_log               /var/log/nginx/error.log crit;
pid                     /var/run/nginx.pid;


# Worker config
events {
        worker_connections  1024;
        use                 epoll;
        multi_accept        on;
}


http {
    # Main settings
    sendfile                        on;
    tcp_nopush                      on;
    tcp_nodelay                     on;
    client_header_timeout           1m;
    client_body_timeout             1m;
    client_header_buffer_size       2k;
    client_body_buffer_size         256k;
    client_max_body_size            256m;
    large_client_header_buffers     4   8k;
    send_timeout                    30;
    keepalive_timeout               60 60;
    reset_timedout_connection       on;
    server_tokens                   off;
    server_name_in_redirect         off;
    server_names_hash_max_size      512;
    server_names_hash_bucket_size   512;


    # Log format
    log_format  main    '$remote_addr - $remote_user [$time_local] $request '
                        '"$status" $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
    log_format  bytes   '$body_bytes_sent';
    #access_log          /var/log/nginx/access.log main;
    access_log off;


    # Mime settings
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;


    # Compression
    gzip                on;
    gzip_comp_level     9;
    gzip_min_length     512;
    gzip_buffers        8 64k;
    gzip_types          text/plain text/css text/javascript text/js text/xml application/json application/javascript application/x-javascript application/xml application/xml+rss application/x-font-ttf image/svg+xml font/opentype;
    gzip_proxied        any;
    gzip_disable        "MSIE [1-6]\.";

    # Proxy settings
    proxy_redirect      off;
    proxy_set_header    Host            $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass_header   Set-Cookie;
    proxy_connect_timeout   90;
    proxy_send_timeout  90;
    proxy_read_timeout  90;
    proxy_buffers       32 4k;


    # Cloudflare https://www.cloudflare.com/ips
    set_real_ip_from   199.27.128.0/21;
    set_real_ip_from   173.245.48.0/20;
    set_real_ip_from   103.21.244.0/22;
    set_real_ip_from   103.22.200.0/22;
    set_real_ip_from   103.31.4.0/22;
    set_real_ip_from   141.101.64.0/18;
    set_real_ip_from   108.162.192.0/18;
    set_real_ip_from   190.93.240.0/20;
    set_real_ip_from   188.114.96.0/20;  
    set_real_ip_from   197.234.240.0/22;
    set_real_ip_from   198.41.128.0/17;
    set_real_ip_from   162.158.0.0/15;
    set_real_ip_from   104.16.0.0/12;
    set_real_ip_from   172.64.0.0/13;
    #set_real_ip_from   2400:cb00::/32;
    #set_real_ip_from   2606:4700::/32;
    #set_real_ip_from   2803:f800::/32;
    #set_real_ip_from   2405:b500::/32;
    #set_real_ip_from   2405:8100::/32;
    real_ip_header     CF-Connecting-IP;


    # SSL PCI Compliance
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 5m;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_stapling on;
    resolver 8.8.8.8;
    # ssl_ciphers        "не важно";


    # Error pages
    error_page          403          /error/403.html;
    error_page          404          /error/404.html;
    error_page          502 503 504  /error/50x.html;


    # Cache settings
    proxy_cache_path /var/cache/nginx levels=2 keys_zone=cache:10m inactive=60m max_size=1024m;
    proxy_cache_key "$host$request_uri $cookie_user";
    proxy_temp_path  /var/cache/nginx/temp;
    proxy_ignore_headers Expires Cache-Control;
    proxy_cache_use_stale error timeout invalid_header http_502;
    proxy_cache_valid any 1d;


    # Cache bypass
    map $http_cookie $no_cache {
        default 0;
        ~SESS 1;
        ~wordpress_logged_in 1;
    }


    # File cache settings
    open_file_cache          max=10000 inactive=30s;
    open_file_cache_valid    60s;
    open_file_cache_min_uses 2;
    open_file_cache_errors   off;


    # Wildcard include
    include             /etc/nginx/conf.d/*.conf;

    server {
      listen    443 ssl;
      server_name calmsector.ru;
      root /home/admin/web/calmsector.ru/public_html/;
      index index.php index.html index.htm;
      keepalive_timeout   60;
      ssl_certificate      /var/lib/acme/live/calmsector.ru/cert;
      ssl_certificate_key  /var/lib/acme/live/calmsector.ru/privkey;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      # ssl_ciphers  "не важно";
      add_header Strict-Transport-Security 'max-age=604800';
      error_log  /var/log/apache2/domains/calmsector.ru.error.log error;
      location /.well-known/acme-challenge/ {
        alias /var/run/acme/acme-challenge/;
        }
    location / {
        proxy_pass      http://185.161.210.160:8080;
        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mpeg|mpg|wmv|exe|iso|dmg|swf)$ {
            root           /home/admin/web/calmsector.ru/public_html;
            access_log     /var/log/apache2/domains/calmsector.ru.log combined;
            access_log     /var/log/apache2/domains/calmsector.ru.bytes bytes;
            expires        max;
        }
    }

    location ~ /\.ht    {return 404;}
    location ~ /\.svn/  {return 404;}
    location ~ /\.git/  {return 404;}
    location ~ /\.hg/   {return 404;}
    location ~ /\.bzr/  {return 404;}

    }
}

И я бы подумал на HSTS, но он подключается УЖЕ на 443, т.е. это не может быть переадресацией.
На всякий случай отключал весь блок с ssl, на переадресацию не повлияло. Я не понимаю, зачем нужен прокси в апач, но если удалить блок с ним, то файлы загружаются вместо того чтобы отобразиться в браузере. Даже .php, хотя его в списке расширений нет.

ip.conf

server {
    listen       185.161.210.160:80 default;
    server_name  _;
    #access_log  /var/log/nginx/185.161.210.160.log main;
    location / {
        proxy_pass  http://185.161.210.160:8080;
   }
}

Опять прокси на апач...

apache2.conf

# It is split into several files forming the configuration hierarchy outlined
# below, all located in the /etc/apache2/ directory:
#
#	/etc/apache2/
#	|-- apache2.conf
#	|	`--  ports.conf
#	|-- mods-enabled
#	|	|-- *.load
#	|	`-- *.conf
#	|-- conf.d
#	|	`-- *

# Global configuration
PidFile ${APACHE_PID_FILE}
Timeout 30
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 10

<IfModule mpm_prefork_module>
    StartServers          8
    MinSpareServers       5
    MaxSpareServers      20
    ServerLimit         256
    MaxClients          200
    MaxRequestsPerChild 4000
</IfModule>

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          200
    MaxRequestsPerChild 4000
</IfModule>

<IfModule mpm_event_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          200
    MaxRequestsPerChild 4000
</IfModule>

# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
#User www-data
#Group www-data

AccessFileName .htaccess

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

DefaultType None
HostnameLookups Off

ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn

# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf

# Include list of ports to listen on and which to use for name based vhosts
Include ports.conf

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
LogFormat "%b" bytes

Include conf.d/

# Include the virtual host configurations:
#Include sites-enabled/

Почти полностью состоит из комментариев, ни намёка на переадресацию.


Вопрос: в чём может быть проблема\куда ещё стоит копать\какие ещё бэкэнд-управляемые способы переадресации могут использоваться?
  • Вопрос задан
  • 773 просмотра
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
martin74ua
@martin74ua Куратор тега Системное администрирование
Linux administrator
Include conf.d/

в конфиге апача - включает конфиг вашего сайта. В этом каталоге посмотрите внимательно.

Апач используется как исполнялка для php. Nginx вообще не умеет исполнять php, это делается или переадресацией на апач, или на php-fpm
Ответ написан
Комментировать
fzfx
@fzfx
18,5 дм
откройте главную страницу вашего сайта в просмотрщике исходного текста страницы браузера. примерно с середины сайта ссылки имеют вид:
href="http://calmsector.ru/viewtopic.php?p=299745#p299745"

именно по этой причине на сайте смешанное содержимое. замените все подобные ссылки где-то в недрах админки вашего сайта на href="viewtopic.php?p=299745#p299745" и будет вам счастье.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы