Задать вопрос
  • Golang как распарсить Json массив внутри kson массива?

    Djam36
    @Djam36 Автор вопроса
    Спасибо, действительно заработало, у меня возник еще 1 вопрос,
    мне нужны все поля и значения этого JSON я сделал вот так
    Codes map[string]interface{}`json:"code"`
    	Codefield2 string `json:"Codefield2"`

    вроде все ОК, значение Codefield2 string `json:"Codefield2"` я получил, а самое название поля нет, натолкните пожалуйста на мысль, что не так?
  • Почему не работает пример?

    Djam36
    @Djam36 Автор вопроса
    abbaboka, Я знаю про gofmt но в Playground его нет, код копирован от туда
  • Почему не работает пример?

    Djam36
    @Djam36 Автор вопроса
    Александр Павлюк, Я внимательно посмотрел и вспомнил что это я экспериментировал, удалил их ;)
  • Почему не работает пример?

    Djam36
    @Djam36 Автор вопроса
    Блин, моя не внимательность, спасибо большое!
  • Последние несколько дней не работает связка ростелеком-cloudflare?

    Djam36
    @Djam36
    Запустите сетевой дамп, можно будет уже наверняка точно сказать почему рвется соединение
  • Не могу понять смысл функции в go?

    Djam36
    @Djam36 Автор вопроса
    Даша Циклаури, Все разобрался, спасибо большое
  • Не могу понять смысл функции в go?

    Djam36
    @Djam36 Автор вопроса
    Немного не понял, это получается "типа метода" в других языках? мы сможем вызывать Page.Save()?
    Когда это удобно использовать?
    Мы же можем внутри функции сделать вот так, или это не правильно? и нужно делать как в примере выше?

    P.S извиняюсь конечно за тупой вопрос, но я действительно не понимаю когда необходимо функцию делать объектом какого-то типа

    type serverconfig struct {
    	Port         string `yaml:"Port"`
    	ReadTimeout  int    `yaml:"ReadTimeout"`
    	WriteTimeout int    `yaml:"WriteTimeout"`
    }
    
    func config() *serverconfig {
    	filename, _ := filepath.Abs("./config.yml")
    	yamlFile, err := ioutil.ReadFile(filename)
    	if err != nil {
    		panic(err)
    	}
    	serverconfig := &serverconfig{}
    	err = yaml.Unmarshal(yamlFile, &serverconfig)
    	if err != nil {
    		panic(err)
    	}
    	return serverconfig
    }
  • Golang запуск функции через command cli?

    Djam36
    @Djam36 Автор вопроса
    Спасибо, в "лоб" меня устроит, что-то я не додумался!
  • Golang поясните по указателям? Как это работает?

    Djam36
    @Djam36 Автор вопроса
    Я вас понял! Спасибо за помощь!
  • Golang поясните по указателям? Как это работает?

    Djam36
    @Djam36 Автор вопроса
    Т.е по факту он просто находит название Переменных в структуре и по соответствию из json вставляет их в структуру? в переменные которые в ней оопределены?
  • Почему не происходит автоматическое добавление хостов в /etc/hosts в рамках одной сети в Docker?

    Djam36
    @Djam36
    Есть такая деректива --add-host="node3.example.com" при старте докер контейнера, если я правильно понял ваш вопрос, она добавит записm в hosts и таких деректив может быть сколько угодно, я это применял при создании монгодб кластера, обращаюсь спокойно к каждой ноде по хост нейму, в чем трудность?
  • Мониторинг веб-сервисов?

    Djam36
    @Djam36
    Для этого удобно использовать связку Grafana+prometheus мониторю микросервисы им и вообще нет проблем, удобно и понятно, так же к аллертам можно прикрутить скрипты которые будут исполняться напримр завис микросервис (нет от него ответов или другие проблемы которые выясняются по логам), есть скрипт который его перегружает, как итог до этого доступность системы по месячному отрезку была 88% SLA 94%, сейчас 98% при минимум затртатах(что-то поднять, что-то перегрузить)
    Если нужна статистика и анализ логов ELK стек например
  • NGINX проксирование всех запросов на все домены на другой NGINX, как?

    Djam36
    @Djam36 Автор вопроса
    Владимир Муковоз, внизу конфиги, там есть конфиг с GEOIP
    Мне этот блок убрать с первого сервера и оставить на втором(новом) куда летят запросы?
    или можно оставить там и там и проблем не будет?
    Просто у меня например сейчас вот есть два домена
    первый prod.domen1 содержит вот это
    server {
            listen 80;
            server_name api.domen.com;
    	set_real_ip_from ip;
    	location ^~ /public/ {
    	       	proxy_pass http://127.0.0.1:8892/;
                    
    
                    proxy_set_header   Host             $host:$server_port;
                    proxy_set_header   X-Real-IP        $remote_addr;
                    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    
                    proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code;
                    proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3;
                    proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name;
    
                    proxy_set_header GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;
                    proxy_set_header GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3;
                    proxy_set_header GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name;
                    proxy_set_header GEOIP_REGION $geoip_region;
                    proxy_set_header GEOIP_CITY $geoip_city;
                    proxy_set_header GEOIP_POSTAL_CODE $geoip_postal_code;
                    proxy_set_header GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
                    proxy_set_header GEOIP_LATITUDE $geoip_latitude;
                    proxy_set_header GEOIP_LONGITUDE $geoip_longitude;
            }
            location / {
                    proxy_pass http://127.0.0.1:8891/;
    		
    
                    proxy_set_header   Host             $host:$server_port;
                    proxy_set_header   X-Real-IP        $remote_addr;
                    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    
                    proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code;
                    proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3;
                    proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name;
    
                    proxy_set_header GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;
                    proxy_set_header GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3;
                    proxy_set_header GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name;
                    proxy_set_header GEOIP_REGION $geoip_region;
                    proxy_set_header GEOIP_CITY $geoip_city;
                    proxy_set_header GEOIP_POSTAL_CODE $geoip_postal_code;
                    proxy_set_header GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
                    proxy_set_header GEOIP_LATITUDE $geoip_latitude;
                    proxy_set_header GEOIP_LONGITUDE $geoip_longitude;
            }
    }
    
    server {
            listen 443 ssl;
            listen [::]:443 ssl;
    
            server_name api.domen.com;
    	set_real_ip_from server;
    
            ssl on;
            ssl_certificate /etc/nginx/ssl/domen1.com.crt;
            ssl_certificate_key /etc/nginx/ssl/domen1.com.key;
            ssl_session_cache shared:SSL:1m;
            ssl_session_timeout  10m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP;
            ssl_prefer_server_ciphers on;
    
            location ^~ /public/ {
    		proxy_pass http://127.0.0.1:8892/;
                    
    
                    proxy_set_header   Host             $host:$server_port;
                    proxy_set_header   X-Real-IP        $remote_addr;
                    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    
                    proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code;
                    proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3;
                    proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name;
    
                    proxy_set_header GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;
                    proxy_set_header GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3;
                    proxy_set_header GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name;
                    proxy_set_header GEOIP_REGION $geoip_region;
                    proxy_set_header GEOIP_CITY $geoip_city;
                    proxy_set_header GEOIP_POSTAL_CODE $geoip_postal_code;
                    proxy_set_header GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
                    proxy_set_header GEOIP_LATITUDE $geoip_latitude;
                    proxy_set_header GEOIP_LONGITUDE $geoip_longitude;
            }
    
            location / {
                    proxy_pass http://127.0.0.1:8891/;
                   
    
                    proxy_set_header   Host             $host:$server_port;
                    proxy_set_header   X-Real-IP        $remote_addr;
                    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    
                    proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code;
                    proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3;
                    proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name;
    
                    proxy_set_header GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;
                    proxy_set_header GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3;
                    proxy_set_header GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name;
                    proxy_set_header GEOIP_REGION $geoip_region;
                    proxy_set_header GEOIP_CITY $geoip_city;
                    proxy_set_header GEOIP_POSTAL_CODE $geoip_postal_code;
                    proxy_set_header GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
                    proxy_set_header GEOIP_LATITUDE $geoip_latitude;
                    proxy_set_header GEOIP_LONGITUDE $geoip_longitude;
            }
    }

    второй домен
    server {
            listen 80;
            server_name *.domen.com;
    
            location / {
                    proxy_pass http://127.0.0.1:8891/;
    
                    proxy_set_header   Host             $host:$server_port;
                    proxy_set_header   X-Real-IP        $remote_addr;
                    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            }
    
    }
    server {
            listen 443 ssl;
            listen [::]:443 ssl;
    
            server_name *.domen.com;
    
    
            ssl on;
            ssl_certificate /etc/nginx/ssl/domen.com.crt;
            ssl_certificate_key /etc/nginx/ssl/domen.com.key;
            ssl_session_cache shared:SSL:1m;
            ssl_session_timeout  10m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP;
            ssl_prefer_server_ciphers on;
    
            location / {
                    proxy_pass http://127.0.0.1:8891/;
                    proxy_set_header   Host             $host:$server_port;
                    proxy_set_header   X-Real-IP        $remote_addr;
                    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            }
    }

    третий домен
    server {
            listen 80;
            listen [::]:80;
            server_name my.domen.com;
            return 301 https://my.domen.com$request_uri;
    }
    
    server {
            listen 443 ssl;
            listen [::]:443 ssl;
    
            root /srv/domen/front/public;
    #       root /srv/domen/stub;
            index index.html;
    
            server_name my.domen.com;
    
            ssl on;
            ssl_certificate /etc/nginx/ssl/domen.com.crt;
            ssl_certificate_key /etc/nginx/ssl/domen.com.key;
            ssl_session_cache shared:SSL:1m;
            ssl_session_timeout  10m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3$
            ssl_prefer_server_ciphers on;
    
            location / {
                    try_files $uri $uri /index.html;
            }
    }

    Вот грубо говоря это маленькая часть что я хочу проксировать конфигом
    который скидывал в посте высше, меня вот интересует что, если я эти конфиги доменов закину на новый сервер, удалю на старом, и оставлю на старом
    server {
            listen 80;
            server_name *.domain1,domain2;
            location / {
                    proxy_pass https://host/;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
    server {
            listen 443 ssl;
            listen [::]:443 ssl;
    
            root /srv/www/front/public;
    #       root /srv/www/stub;
            index index.html;
    
            server_name *.domain1,domain2;
    
            ssl on;
            ssl_certificate /etc/nginx/ssl/domain.me.crt;
            ssl_certificate_key /etc/nginx/ssl/domain.me.key;
            ssl_session_cache shared:SSL:1m;
            ssl_session_timeout  10m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3$
            ssl_prefer_server_ciphers on;
            location / {
                    proxy_pass https://host/;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    
    }

    Нормально это все будет работать? или нет? это малая часть доменов которые нужно перенести, есть ещё, у всех у них wildcard сертификат, т.е по сути для доменов и поддоменов одной группы, я смогу сделать отдельный конфиг, или можно это как-то сделать все проще? я чет запутался, никогда такой задачей не занимался
  • NGINX проксирование всех запросов на все домены на другой NGINX, как?

    Djam36
    @Djam36 Автор вопроса
    Владимир Муковоз, Я вот сейчас пробую сделать данную схему, у меня возник вопрос, я прописал

    server {
            listen 80;
            server_name *.domain1,domain2;
            location / {
                    proxy_pass https://host/;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
    server {
            listen 443 ssl;
            listen [::]:443 ssl;
    
            root /srv/www/front/public;
    #       root /srv/www/stub;
            index index.html;
    
            server_name *.domain1,domain2;
    
            ssl on;
            ssl_certificate /etc/nginx/ssl/domain.me.crt;
            ssl_certificate_key /etc/nginx/ssl/domain.me.key;
            ssl_session_cache shared:SSL:1m;
            ssl_session_timeout  10m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3$
            ssl_prefer_server_ciphers on;
            location / {
                    proxy_pass https://host/;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    
    }


    Такое взлетит? и не будет ли проблем? Сразу хочу добавить что на новом сервере под каждый домен есть свой конфиг со своими location и ещё используется geoip, мне нужно на первом сервере добавлять информацию в header или на втором?
  • NGINX проксирование всех запросов на все домены на другой NGINX, как?

    Djam36
    @Djam36 Автор вопроса
    Спасибо за подробный ответ
    Я не могу прокинуть весь трафик в Iptables, там есть свои заморочки.
    Я вот немного не понял вот этот момент "Только нужно учесть момент, чтобы старый сервер считывал именно сайты именно с нового нужно или убедиться обновились ли у него днс или указать их в ручную или прибегнуть к помощи вот этой директивы." не могли бы пояснить?
  • NGINX проксирование всех запросов на все домены на другой NGINX, как?

    Djam36
    @Djam36 Автор вопроса
    Спасибо, я так же планировал, буду тогда так делать