Задать вопрос
  • Ubuntu 18.04 3 сетевых интерфейса в netplan, два работают, третий нет, почему?

    @emellstornn Автор вопроса
    hint000, ман с амазона:
    https://aws.amazon.com/ru/premiumsupport/knowledge...
    Я знаю, что мне нужны белые адреса. И именно их я и получаю. Вы, похоже, никогда не работали с aws.amazon и их механикой elactic IP? Каждому адресу типа "172.31.22.168" сопоставлен соответствующий белый адрес. Полностью весь их роутинг мне абсолютно непрозрачен.
    Для восьми IP-адресов мой конфиг работает, мне кажется, я вполне доступно это описал. То есть, еще раз:
    два сетевых интерфейса, 8 серых адресов, 8 белых адресов, сопоставленных амазоном с серыми, которые прописываю я. С этих 8 адресов я могу выходить в мир, эти 8 адресов пингуются из мира. Добавляю третий сетевой интерфейс с аналогичным конфигом - и он не имеет выхода наружу, хотя внутри сети амазона все это пингуется прекрасно.
    Нет, не накрутка (не слив). Для накрутки или слива городить такой огород нет смысла. Нет, прокси или впн не вариант.
    Ruslan-Strannik а вам это зачем? Пингуется по всем четырем белым адресам, сопоставленным серым адресам, которые можно увидеть в приведенном выводе Ip addr.
  • Ubuntu 18.04 3 сетевых интерфейса в netplan, два работают, третий нет, почему?

    @emellstornn Автор вопроса
    hint000, задача такая:
    Есть Х адресов, в моем случае 12, потом будет больше. Есть сервер, на который я вешаю эти адреса. На нем стоит софтина, которая делает запросы на один ресурс. Нужно, чтобы она эти запросы делала с разных, но строго определенных адресов.
    Проблема в том, что на один сетевой интерфейс Амазон не даёт вешать больше 4 адресов, причем адреса привязаны к интерфейсу через их веб-морду. То есть сперва я получаю соответствие адресов и интерфейсов, и только потом могу выпускать из наружу.
    Мануал скину через час, сейчас с телефона. Спасибо.
  • Почему я не могу получить сертификат letsencrypt nginx?

    @emellstornn Автор вопроса
    Если прочитать вопрос еще раз, то станет ясно, что же мне было непонятно.
    Я убедился, мое доменное имя правильно введено, что записи днс а/аааа содержат верные адреса. Сайт прекрасно открывается по хттп, сайт прекрасно открывается по хттпс с самоподписанным сертификатом (за исключением предупреждения браузера, разумеется). Я не знаю механизма, который объяснил бы подобную работоспособность при ошибках в записях днс.
  • Почему я не могу получить сертификат letsencrypt nginx?

    @emellstornn Автор вопроса
    Проблема в итоге решилась запуском certbot просто командой sudo certbot и прохождением процедуры генерации ключей. Почему перестал работать certonly я не понял. Спасибо всем кто отозвался.
  • Почему я не могу получить сертификат letsencrypt nginx?

    @emellstornn Автор вопроса
    Что характерно, в директориях других работающих сайтов, которые без проблем получили сертификаты, нет директории .well-known/acme-challenge. Так и должно быть?
    P.S. Да, так и должно быть, сертбот потом за собой затирает эти файлы.
  • Почему я не могу получить сертификат letsencrypt nginx?

    @emellstornn Автор вопроса
    ubuntu@18:/var/www/landings/data/www/waterstarsaunapart.com/.well-known/acme-challenge$ ls -l
    total 4
    -rwxrwxrwx 1 root root 13 Jul  4 07:32 test.txt
    ubuntu@18:/var/www/landings/data/www/waterstarsaunapart.com/.well-known/acme-challenge$  curl -I  http://waterstarsaunapart.com/.well-known/acme-challenge/test.txt
    HTTP/1.1 404 Not Found
    Server: nginx/1.12.2
    Date: Wed, 04 Jul 2018 06:36:11 GMT
    Content-Type: text/html
    Connection: keep-alive
    
    ubuntu@18:/var/www/landings/data/www/waterstarsaunapart.com/.well-known/acme-challenge$ ping waterstarsaunapart.com
    PING waterstarsaunapart.com (18.220.149.253) 56(84) bytes of data.
    64 bytes from 18.220.149.253 (18.220.149.253): icmp_seq=1 ttl=64 time=0.016 ms
    64 bytes from 18.220.149.253 (18.220.149.253): icmp_seq=2 ttl=64 time=0.036 ms

    Выясняю почему, спасибо за наводку.
  • Почему я не могу получить сертификат letsencrypt nginx?

    @emellstornn Автор вопроса
    Arik,
    1. Правки конфига? Там небыло правок касательно адресов, только открывал/закрывал локейшны/скрипты.
    Записи в акцессе есть.
    66.133.109.36 - - [04/Jul/2018:07:13:12 +0100] "GET /.well-known/acme-challenge/-xSx5JtqZM9ESp2VCkhCrKqupqVbeceTAcT3P8fnIxs HTTP/1.1" 404 180 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"
    66.133.109.36 - - [04/Jul/2018:07:13:56 +0100] "GET /.well-known/acme-challenge/whrh5kO1VnsdW_pou69vOAHAYFFAAMCnVAH0oW-tM7E HTTP/1.1" 404 180 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"

    В ерроре смущающая меня запись:
    2018/07/04 07:13:12 [error] 19956#19956: *5231 openat() "/usr/local/mgr5/www/letsencrypt/-xSx5JtqZM9ESp2VCkhCrKqupqVbeceTAcT3P8fnIxs" failed (2: No such file or directory), client: 66.133.109.36, server: waterstarsaunapart.com, request:$
    2018/07/04 07:13:56 [error] 19956#19956: *5241 openat() "/usr/local/mgr5/www/letsencrypt/whrh5kO1VnsdW_pou69vOAHAYFFAAMCnVAH0oW-tM7E" failed (2: No such file or directory), client: 66.133.109.36, server: waterstarsaunapart.com, request:$

    2. Нет, ipv6 не подключал, АААА записей нет.
  • Почему я не могу получить сертификат letsencrypt nginx?

    @emellstornn Автор вопроса
    Проглядел что тут появился коммент, извините. Исп вообще криво выдает сертификаты - в зависимости от погоды на Марсе он может как выдать сертификат, так и висеть неделю в "Сертификат Let’s Encrypt в процессе получения", поэтому генерю сертификаты консольно через certbot.

    Бахнул сайт, завел заново, конфиг автогенеренный испом.
    spoiler
    server {
    	server_name waterstarsaunapart.com waterstarsaunapart.net waterstarsaunaparts.com waterstarsaunaparts.net;
    	charset off;
    	index index.php index.html;
    	disable_symlinks if_not_owner from=$root_path;
    	include /etc/nginx/vhosts-includes/*.conf;
    	include /etc/nginx/vhosts-resources/waterstarsaunapart.com/*.conf;
    	access_log /var/www/httpd-logs/waterstarsaunapart.com.access.log;
    	error_log /var/www/httpd-logs/waterstarsaunapart.com.error.log notice;
    	ssi on;
    	set $root_path /var/www/landings/data/www/waterstarsaunapart.com;
    	root $root_path;
    	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 ^~ /.well-known/acme-challenge {                    
            allow all;                                              
            default_type "text/plain";
        }                                                           
        
    	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;
    		proxy_set_header X-Forwarded-Port $server_port;
    		access_log off;
    	}
    	listen 172.31.36.168:80;
    	listen 18.220.149.253:80;
    }
    server {
    	server_name waterstarsaunapart.com waterstarsaunapart.net waterstarsaunaparts.com waterstarsaunaparts.net;
    	ssl on;
    	ssl_certificate "/var/www/httpd-cert/landings/waterstarsaunapart.com_le1.crt";
    	ssl_certificate_key "/var/www/httpd-cert/landings/waterstarsaunapart.com_le1.key";
    	ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4;
    	ssl_prefer_server_ciphers on;
    	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    	ssl_dhparam /etc/ssl/certs/dhparam4096.pem;
    	charset off;
    	index index.php index.html;
    	disable_symlinks if_not_owner from=$root_path;
    	include /etc/nginx/vhosts-includes/*.conf;
    	include /etc/nginx/vhosts-resources/waterstarsaunapart.com/*.conf;
    	access_log /var/www/httpd-logs/waterstarsaunapart.com.access.log;
    	error_log /var/www/httpd-logs/waterstarsaunapart.com.error.log notice;
    	ssi on;
    	set $root_path /var/www/landings/data/www/waterstarsaunapart.com;
    	root $root_path;
    	listen 172.31.36.168:443;
    	listen 18.220.149.253:443;
    	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 ^~ /.well-known/acme-challenge {                                    
            allow all;    
            default_type "text/plain";
        }                                                                           
        
    	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;
    		proxy_set_header X-Forwarded-Port $server_port;
    		access_log off;
    	}
    }


    C небольшими правками.
  • Почему я не могу получить сертификат letsencrypt nginx?

    @emellstornn Автор вопроса
    Вот и я о чем. Несколько сайтов, чертова уйма доменов. Один и тот же конфиг, одна и та же команда, меняю только директорию и имя домена, небыло проблем, а тут резко возникли. Делегирование верное, адрес верный, имя домена верное, директория верная, дал явное разрешение в конфиге (в предыдущих конфигах не делал), уже 777 кинул на всю директорию (жест отчаяния), но безрезультатно.
  • Почему я не могу получить сертификат letsencrypt nginx?

    @emellstornn Автор вопроса
    Ни для одного домена (больше 30) не надо было ничего создавать, а тут понадобилось? Почему?
  • Nginx+drupal7+landing pages как правильно настроить перенаправление?

    @emellstornn Автор вопроса
    Владимир Муковоз, проверил. Сразу не заработало, с небольшой корректировкой работает. Желание разобраться есть, иначе бы я не докучал бы вопросами и не курил маны уже третий день. Спасибо за помощь еще раз :).

    Итоговый вариант, который заработал у меня, может, пригодится кому:
    set $domain 'example';
    if ($arg_q != $domain){
            rewrite  ^(.*)$   $scheme://$host$1?q=$domain     redirect;
            break;
        }
  • Nginx+drupal7+landing pages как правильно настроить перенаправление?

    @emellstornn Автор вопроса
    Да и вообще в итоге отказался от идеи редиректа с аргументом, вылезают побочные проблемы типа перехода в админку через ?q=user и тд. Вариант с модулем их решает. Остался разве что спортивный интерес :).
  • Nginx+drupal7+landing pages как правильно настроить перенаправление?

    @emellstornn Автор вопроса
    Владимир Муковоз, домой ехал. В том и закавыка, что по синтаксису должно работать, вроде пишу все правильно, конфиг выше приведен. Но, блин, не работает. Самое простое и правильное - да, проверять arg_q на соответствие, и в противном случае делать редирект. Отваливаются css. В случае обычного рерайта без проверки аргумента (какой пользователь будет специально вводить аргумент, чтобы его проверять?) начинает циклить. Ваше правило по сути повторяется с вышеприведенным мной
    #if ( $arg_q !~ example) { rewrite ^(.*)$ http://example.com/?q=example? redirect;}
    , разве что проверяется точное соответствие, а не содержание. С break`ом или без, результат был един.
  • Nginx+drupal7+landing pages как правильно настроить перенаправление?

    @emellstornn Автор вопроса
    #if ( $arg_q !~ part) { rewrite ^(.*)$ http://example.com/?q=example? redirect;}

    Не part, exapmle.
  • Nginx+drupal7+landing pages как правильно настроить перенаправление?

    @emellstornn Автор вопроса
    Владимир Муковоз, смысл параметров в следующем:
    В друпале созданы 400 landing pages с контентом для 100 групп по 4 домена. Переход на эти ленды идет через параметр ?q=(имя ленда).
    То есть в случае с example.com example.net examples.com examples.net точка назначения должна быть example.com/?q=example, тогда отобразится требуемый контент для группы доменов example. Вышеописанное - исходные данные, я на них не могу повлиять (кроме установки модуля, который дает возможность показывать блоки с привязкой к домену, а не к ленду).
    Это все прекрасно работало и управлялось связкой apache+htaccess.
    Задача: перетащить это все на nginx (меняется хостинг) с сохранением работоспособности. Мой итоговый конфиг, работающий с условием прикрученного дополнительного модуля:
    server {
        listen 80;
        listen 443;
        server_name example.com examples.com example.net examples.net;
        root /var/www/html/landingpages/lp;
     if ( $host !~ example.com){
            rewrite             ^(.*)$            https://example.com/?     redirect;
            break;
        }
    	
    #===============================SSL
         ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
         ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    #==================================
    
    	location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
    	root /var/www/html/landingpages/lp;
    	index index.html index.php;
    	access_log off;
    	expires 30d;
    	proxy_cache_valid 404 1m;
    }
    
    #==============================
        location @drupal{
             include        fastcgi_params;
             fastcgi_param  QUERY_STRING         q=$uri&$args;
             fastcgi_param  SCRIPT_NAME          /index.php;
        }
    
        location = /favicon.ico {
            log_not_found off;
            access_log off;
        }
    
        location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
        }
    
        location ~* \.(txt|log)$ {
            allow 192.168.0.0/16;
            deny all;
        }
    
        location ~ \..*/.*\.php$ {
            return 403;
        }
    
        location ~ ^/sites/.*/private/ {
            return 403;
        }
    
        location ~* ^/.well-known/ {
            allow all;
        }
    
        location ~ (^|/)\. {
            return 403;
        }
    #=============================
     location / {
            try_files $uri /index.php?$query_string; # For Drupal >= 7
            index index.php index.html index.htm;
        }
    #=============================
        location @rewrite {
    #        rewrite ^/(.*)$ /index.php?q=$1;
    #       rewrite ^/(.*)$ /index.php?q=precisiontherapysauna.com;
        }
    
        location ~ /vendor/.*\.php$ {
            deny all;
            return 404;
        }
        location ~ '\.php$|^/update.php' {
            fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
            include fastcgi_params;
            fastcgi_param HTTP_PROXY "";
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param QUERY_STRING $query_string;
            fastcgi_intercept_errors on;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
        }
    
    
        location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
            try_files $uri @rewrite;
    		 }
    
        location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
            try_files $uri /index.php?$query_string;
        }
    	
        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires max;
            log_not_found off;
        }
    }

    Варианты редиректов типа
    rewrite ^(.*)$ http://example.com/?q=example? redirect;

    #if ( $arg_q !~ part) { rewrite ^(.*)$ http://example.com/?q=example? redirect;}

    #if ( $query_string !~ example ) {rewrite             ^(.*)$            http://example.com/?q=example?     redirect;}
    приводили к вышеописанным проблемам.
  • Nginx+drupal7+landing pages как правильно настроить перенаправление?

    @emellstornn Автор вопроса
    Владимир Муковоз, мне не надо было видеть, какой домен открыт у клиента. У меня 400 доменов, сгруппированных в пачки по 4 штуки. Для каждой пачки уникальный контент :). Раньше это все рулилось хтакцессом, теперь перетаскиваю на nginx, и споткнулся на казалось бы рядовой задаче перенаправления в пределах одного домена. С домена на домен перенаправить никаких проблем нет, а вот в пределах одного домена - крутит в цикле, и хоть ты тресни. Либо отваливается css, и скорость как на диалапе. В итоге прикрутил модуль к друпалу, чтобы не надо было форвардить в пределах одного домена, остальные 3 домена из пачки перевожу на первый, профит.
  • Nginx+drupal7+landing pages как правильно настроить перенаправление?

    @emellstornn Автор вопроса
    Владимир Муковоз, да черт с ним, решил ассиметрично, прикрутив к друпалю модуль, который показывает блоки в зависимости от хоста. Спасибо, что не поленился ответить :).
  • Nginx+drupal7+landing pages как правильно настроить перенаправление?

    @emellstornn Автор вопроса
    Владимир Муковоз, если ты про location /{} - то наткнулся на такой вариант на одном из форумов, у людей работало.
    По идее, самый правильный вариант через args, и он даже правильно редиректит, только, как я уже писал, работает чертовски медленно, и отпадает вся графическая составляющая (css, картинки итд).
  • Nginx+drupal7+landing pages как правильно настроить перенаправление?

    @emellstornn Автор вопроса
    Владимир Муковоз, все равно фигня выходит =(.
    При проверке args все работает, но крайне медленно и отваливаются css и картинки, сайт получается эпохи web 1.0.
    Пробовал прописывать rewrite в location / {
    Та же фигня.
  • Nginx+drupal7+landing pages как правильно настроить перенаправление?

    @emellstornn Автор вопроса
    Дело было не в бобине и не в редиректах. Не хватало следующих строк
    fastcgi_param SCRIPT_FILENAME /path/to/index.php;
    fastcgi_param SCRIPT_NAME /index.php;
    fastcgi_param QUERY_STRING q=$uri&$args;
    в location @drupal.
    Владимир Муковоз, спасибо большое за помощь.