LINUX.ORG.RU

72
Всего сообщений: 981

Настройка тестового сервера

Доброго времени суток!

Столкнулся с такой проблемой, купил тестовый VDS, для теста своих проектов, настроил все пакеты, по IP захожу, но хотелось бы разные проекты и сервисы на поддомены раскидать. Если был бы домен, то проблем нет, а вот как по IP чего не могу сообразить. Веб сервер nginx 1.13.

По сути надо в конфиг добавить server{} и указать настройки для поддомена, ну как работать без домена, а c IP чего-то не понимаю.

pma.xxx.xxx.xxx.xxx вот что-то типа этого хочу.

 ,

AnonimS ()

Контроль доступа к статическому контенту на веб-сервере

На сервере есть статическая html страничка, которая обновляется по триггеру. Хочу чтобы доступ к ней был только с моих устройств. Пароль или какой-нибудь сертификат - не суть важно.

Правильно ли я понимаю, что а) без https это бесполезно; б) нужно что-нибудь типа nginx + basic auth?

 , ,

aquadon ()

Получение сертификата letsencrypt за haproxy

Есть два стенда за натом, оба на сентос 7:

1. стенд (1) с хапрокси и бекендом в виде nginx (на нем только лежат страницы ошибок, он же является дефолтным бекендом). Тут же стоит certbot (клиент lets’encrypt), в хапрокси настроено получение сертификатов на любой сайт. После расшифровки сертификата, отправляет запрос на второй стенд. Для получения сертификата использую специальный бекенд ( в конфиге ниже).

2. Стенд (2) со связкой nginx+apache. Инжинкс принимает на 80 порту, обрабатывает статику, и отправляет на апачевский 8080.

Задача – соединить два стенда на одной машине. Порты распределила так: хапрокси – 80, инджиниксу – 8070, апачу – 8080. Всё работает, но сертификат получить не могу. Ошибки – ниже.

Конфиги:

 cat /etc/haproxy/haproxy.cfg

[root@conf126 nginx]# cat /etc/haproxy/haproxy.cfg
#-------------------------
# Глобальные настройки
#-------------------------
global
  log         127.0.0.1 local2     # Лог конфигурации
  chroot      /var/lib/haproxy     # Запирает службы в её дериктории
  pidfile     /var/run/haproxy.pid
  maxconn     10000
  user        haproxy               # Haproxy запускается под пользователем и группой "haproxy"
  group       haproxy
  daemon                            # Запускается демоном
  stats socket /var/lib/haproxy/stats
  tune.ssl.default-dh-param 2048
  ssl-default-bind-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
   ssl-default-bind-options no-sslv3 no-tls-tickets
   ssl-default-server-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
   ssl-default-server-options no-sslv3 no-tls-tickets
defaults
  mode     
  log      global  
  option forwardfor
  option http-server-close
  option   httplog  
  option   dontlognull
  option   redispatch  
  retries   3 
  timeout http-request    10s
  timeout queue           1m
  timeout connect         
  timeout client          1m
  timeout server          1m
  timeout http-keep-alive 10s
  timeout check           10s
  maxconn                 3000
frontend http
bind :80
reqadd X-Forwarded-Proto:\ http
default_backend localhost
#----------------------------------
# certbot
acl letsencrypt-acl path_beg /.well-known/acme-challenge/
use_backend letsencrypt-backend if letsencrypt-acl

# test.domen.ru
use_backend test.domen.ru if { hdr_end(host) -i test.domen.ru }     { dst_port 80 }
#----------------------------------
frontend https
 bind :443
 http-request set-header X-SSL %[ssl_fc]
 http-request add-header X-Forwarded-Proto https if { ssl_fc }
 reqadd X-Forwarded-Proto:\ https
 default_backend localhost
#----------------------------------
backend localhost
server server1 127.0.0.1:8070
# test.domen.ru
backend test.domen.ru
server test.domen.ru 127.0.0.1:8070
# certbot
backend letsencrypt-backend
server letsencrypt 127.0.0.1:54321

 cat /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log crit;
include /usr/share/nginx/modules/*.conf;
###################################################
events {
   worker_connections 1024;
}
###################################################
http {
   log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent  "$http_referer" '
                     '"$http_user_agent"  "$http_x_forwarded_for"';
   access_log  /var/log/nginx/access.log  main;
   server_names_hash_max_size 2048;
   server_names_hash_bucket_size 512;
##################################################
  server_tokens off;
  sendfile            on;
   tcp_nopush          on;
   tcp_nodelay         on;
   keepalive_timeout   65;
   types_hash_max_size 2048;
##################################################
   include             /etc/nginx/mime.types;
   default_type        application/octet-stream;
##################################################
gzip on;
gzip_min_length  1100;
gzip_buffers  4 32k;
gzip_types    text/plain application/x-javascript     text/xml text/css;
ignore_invalid_headers on;
client_header_timeout  3m;
client_body_timeout 3m;
client_header_buffer_size 4k;
client_max_body_size 1024m;
send_timeout     3m;
connection_pool_size  256;
client_body_buffer_size 4096k;
charset UTF-8;
#############################################
proxy_connect_timeout 3600s;
proxy_send_timeout 3600s;
proxy_read_timeout 3600s;
proxy_buffer_size 512k;
proxy_buffers 512 4096k;
proxy_busy_buffers_size 4096k;
proxy_temp_file_write_size 4096k;
##############################################
 large_client_header_buffers 4 64k;
 request_pool_size  4k;
 output_buffers   4 32k;
 postpone_output  1460;
include /etc/nginx/conf.d/*.conf;
}
cat /etc/nginx/conf.d/test.domen.ru.conf
server {
       listen       8070;
       server_name  test.domen.ru www.test.domen.ru;
       root /web/site/test.domen.ru;
       location / {
       }
}
ls -la /web/site
drwxr-xr-x 2 nginx nginx  24 апр 20 13:03 test.domen.ru

В логах инджиникса – чисто. При получении сертификата выдает ошибки:

 The following errors were reported by the server:

   Domain: test.domen.ru
   Type:   connection
   Detail: Fetching
   http://test.domen.ru/.well-known/acme-challenge/J2WyfEgZBH6C7qYcURdZG5yOB1mNe8b8F--Q36j4UBA:
   Timeout after connect (your server may be slow or overloaded)

   Domain: www.test.domen.ru
   Type:   connection
   Detail: Fetching
   http://www.test.domen.ru/.well-known/acme-challenge/0PuIG74SFcZ1pOvWq661XWgTBJnwBbGAKto4q_ByGfo:
   Timeout after connect (your server may be slow or overloaded)

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided. 

Подскажите куда смотреть, чтобы сертификат получить? Домен доступен, в браузере отображается.

 , ,

manik207 ()

Хочу отдавать static html если недоступен proxy_pass сервер

Кейс. Через в nginx настроен proxy_pass на другой порт, который слушает другой веб-сервер (Java, Spring, к примеру). Иногда требуется перегрузить этот веб-сервер. Nginx, соответственно, выдает ошибку, что недоступен сейчас.

Можно ли его «уговорить» отдавать какой-нибудь статический html в таком случае? Можно было бы запилить «объяснительную», почему сервер в дауне, и javasrcipt-ом пытаться перегрузить страницу. Было бы стильно, модно, молодежно.

___

maxcom, почему тег «proxy_pass» некорректный?

 , ,

bvn13 ()

Редирект при обращении к домену на альтернативный url (gitlab/nginx)

Как средствами nginx сделать редирект при обращении к доменному имени на альтернативый url? Подобную идею позаимствовал у debian.

При обращении к salsa.debian.org перебрасывает на salsa.debian.org/public

Как можно подобное провернуть средствами nginx, который в gitlab?

 ,

BitSum ()

Хватит обсуждать телеграмм, напишите лучше кто-нибудь новость про новый nginx

https://nginx.org/en/CHANGES-1.14

Changes with nginx 1.14.0 17 Apr 2018

*) 1.14.x stable branch.

 

imul ()

nginx 1.14.0

Пока все обсуждают забан телеграма, обход забана телеграма и всякую сопредельную политоту, тихо и незаметно отпочковалась новая стабильная ветка nginx-а — 1.14.0
https://nginx.org/en/CHANGES-1.14
https://nginx.org/en/download.html

 , ,

MrClon ()

Левые имена в access.log

Проверяя логи NGINX случайно заметил много обращений к серверу по неправильному имени сервера.
То есть вместо mysupersite.ru ко мне попадают запросы идущие на mysupersaite.ru, maisupersite и прочее.
Кто-то с большим количеством свободного времени реально наделал похожих имён на мой IP.
Вопросов 2
1) Зачем?
2) Как прекратить эти безобразия?
Конфиг такой:

server {
listen 80;
server_name mysupersite.ru;
location / {return 301 https://somesite.ru$request_uri;}
}


Так как Nginx матчит первую попавшуюся секцию server, в случае если нет точных совпадений, то посетители mysupersaite.ru в итоге попадают на мой https://mysupersite.ru.
И вроде бы ничего страшного, но я недоумеваю.

Пробовал выставить первой секцией
server {
      listen 80 default_server;
      return 444;
}


но это не помогло, всё равно при запросом curl'ом или браузером на неправильный домен попадаю на свой

 

zolden ()

Nginx. Авторизация по определенной ссылке

День добрый! Подскажите пжлста, как можно сделать следующее: Есть сайт http://example.org - на него доступ по паролю (auth_basic) Необходимо убрать авторизацию для раздела http://example.org/_v1/

Как это можно сделать?

 ,

genesys ()

Вакансия DevOps Fulltime Москва-Сити

Высоконагруженный проект, платформа мобильного телевидения https://vacancy.newhr.ru/devops/2

О проекте

  • Стриминг видео, проект на стыке онлайн-вещания и игровой механики
  • Сотни тысяч запросов в секунду. Пиковые нагрузки на аналогичные проекты в Штатах – 3,5 млн активных пользователей online
  • Стартап, дата запуска – осень 2018

О задачах

  • Основная задача - создание и поддержка инфраструктуры проекта, способного выдерживать и обрабатывать сотни тысяч запросов в секунду
  • Подготовка инфраструктуры к масштабированию
  • Помощь разработчикам с их задачами
  • Планирование инфраструктуры под новые проекты
  • Внедрение новых технологий DevOps
  • Есть возможность привлечения на проект внешнего, опытного DevOps консультанта, который сможет помочь решить сложные и нетривиальные вопросы.

Хотим увидеть у вас

  • Опыт работы и глубокое понимание Linux систем, траблшутинг
  • Опыт с нагруженными системами, тюнинг производительности
  • Опыт работы с Nginx. Плюсом будет опыт с Haproxy
  • Опыт работы со средствами виртуализации и кластеризации, Docker, Docker Swarm
  • Автоматизация развертывания с помощью Ansible или аналогов
  • Опыт работы с системами мониторинга (такими как Icinga2 или Nagios)
  • Умение настроить БД: ProstgreSQL, Redis или другие NoSQL решения
  • Опыт работы с системами CI (в идеале Jenkins)

Важно

  • С момента запуска проекта первое время перейти на смещённый к вечеру рабочий день (~до 22-23), чтобы во время онлайн-эфиров быть в офисе.

Мы предлагаем

  • Уровень дохода 180-200 тыс.руб. net
  • Fulltime занятость, офис в Москва-Сити
  • Оформление через ИП или гражданско-правовой договор (все налоги оплачивает компания)
  • Оплачиваемые отпуска и больничные, ДМС после испытательного срока
  • Небольшая профессиональная команда
  • Возможность подключаться к другим проектам (кластер проектов)

По вопросам о компании и вакансии пишите нашему хантеру, Ксении, в почту ksenia@new.hr

Расскажем все важные детали, ответим на вопросы, выслушаем пожелания.

 , , ,

flaum ()

ssl_certificate vs. ssl_trusted_certificate

Решил поиграться с OCSP stapling на Nginx и, не смотря на то, что судя по интернетам там всё просто, SSL test говорит, что у меня оно не взлетает.
Как я понимаю, дело в ssl_trusted_certificate, но не очень понятно что там должно быть и чем он отличается от ssl_certificate.
Лор, научи меня в сертификаты

 , ,

zolden ()

404 ошибка upstream

всем привет не могу понять в чем ошибка nginx + IIS

upstream start {

    server test.ru:80;
}

server {

    reset_timedout_connection on;
    keepalive_timeout 65s;
    listen 80;
    server_name api.ru;

    location / {

#        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_set_header Accept-Encoding "";
        proxy_read_timeout 300s;
        proxy_pass http://start/;

    }

запускаю api.ru

вылетает ошибка HTTP Error 404. The requested resource is not found.

Если не исользую upstream просто

proxy_pass http://test.ru:80;

то всё работает

 

carter ()

Обьединение web-серверов на NGINX

Доброго времени суток :)

Есть у меня в сети два web-сервера, оба на nginx, режим доступа к ним - в хостах юзеров прописано какое доменное имя к какому IP завязан. На каждом сервере есть по нескольку ресурсов - всяческие реестры и системы учёта. Объединить всё в один - нельзя, уровни секретности, епт.
На сервере А есть ресурсы А1 и А2.
На сервере В есть ресурсы В1, В2 и В3.

Отныне нужно эти два сервера как-то вывести в глобальную сеть, внешний IP у нас один. С роутера проброшен порт на сервер А.

Нужно настроить сие таким образом дабы запрос к серверу А отдавался юзеру, а запрос к серверу В проходил через А отрабатывался на сервере В и возвращался юзеру.

В принципе на сервере А в конфигах nginx'а можно забить все домены с сервера В и через proxy_pass гонять все нужные запросы на сервер В.
Но правильно ли сие? Можно ли как-то перенаправлять запросы не nginx'ом, а... чем-то более легковесным (например iptables)? И стоит ли сие делать?

 ,

Bubublik ()

Вакансия: Москва, системный администратор/devops CentOS

Город: Москва, метро Дмитровская

Занятость: полная, работа только в офисе с 10 до 19 (вариант - с 11 до 20).

Размер оплаты: 100 - 150 т.р. в зависимости от навыков

Форма оплаты: 100% белая, ежеквартальные премии.

Соцпакет: ДМС

На проект поддержки почтовой системы на 500 000 пользователей требуется системный администратор/devops со знанием Linux. Используемый дистрибутив - CentOS.

Задачи:

  • поддержка кластера (40+) серверов проекта
  • системное скриптование на шелл и базовых утилитах
  • диагностика и устранение аварий
  • участие в разработке и внедрении новых подсистем проекта
  • разработка и внедрение новой системы мониторинга
  • взаимодействие с другими проектами по вопросам интеграции

Навыки:

Требуется знание основ системного скриптования, HAProxy, Nginx, Postfix, MySQL, Zabbix, Ansible; опыт работы с CommuniGate приветствуется, но не обязателен. Знание Perl - плюс. Необходимо понимание принципов работы POP3, IMAP, SMTP, SNMP, DHCP, DNS.

Контакты: email: apeshekhontseva@at-consulting.ru

 , , , ,

stellar ()

Ищу работу: Удаленный администратор. Linux, Highload. Поддержка и фулл тайм.

Уважаемые работодатели, выполняю работы по настройке и поддержке кластерных WEB решений и не только. Имею хороший опыт удаленной работы в крупной компании с большим количеством разработчиков, поддержки и обслуживания кластерных WEB/MAIL/DB/SIP решений, в том числе опыт поддержки большого количества физических серверов (более 200), автоматизации сервисов, опыт работы с различными системами мониторинга, IP телефонией и сетевым оборудованием.

Общий опыт работы с Linux, сетями и телефонией более 10 лет.

Работаю с любыми дистрибутивами, нагруженными WEB сервисами, пишу любые скрипты автоматизации. Обслуживаю кластеры баз данных, WEB кластеры, почтовые кластеры, системы очередей, различные системы виртуализации.

Ключевые кластерные решения успешно внедренные в разных проектах:

WEB: Nginx / PHP-FPM / Redis / Memcached

SQL: MariaDB Galera / PostgreSQL Citus / ProxySQL / PGPool

NOSQL: Redis / MongoDB / Tarantool / CouchDB / Sphinx / Elastic

File: LizardFS / MooseFS / GlusterFS

SIP: OpenSIPS / MediaProxy / Asterisk

Общие термины:

Asterisk / VMware / KVM / Proxmox / Nginx / Apache / Lighttpd / Hybris SAP / PHP5-FPM / PHP7-FPM / HHVM / MariaDB Galera Cluster / PostgreSQL Citus / Redis / Cassandra / HBase / MongoDB / Tarantool / Memcached / CouchDB / Sphinx / Solr / Elastic / Wildfly / Tomcat / Samba / LizardFS / MooseFS / GlusterFS / Lsyncd / FTP / Bind / Unbound / PowerDNS / OpenVPN / L2TP / IPSEC / Strongswan / Radius / IPtables / Ansible / LibreNMS / Newrelic / MMonit / Graylog / Grafana / Prometheus / Graphite / InfluxDB / FluentD и прочее.

Все возможные сервисы перечислять не имеет смысла, есть опыт и по Windows/AD/MSSQL сервисам, опыт по интеграции сервисов между собой, опыт A/B тестирования WEB приложений, настройка отложенных репликаций, построение горизонтального шардинга БД, отказоустойчивые сетевые конфигурации.

График удаленный, работа по договору подряда(возможно и без него), стоимость всегда обсуждаема в зависимости от Ваших задач.

Контакты:

Андрей

E-mail: syslinux@protonmail.com

Matrix: syslinux@protonmail.com / @syslinux:matrix.org ( https://about.riot.im/ )

Telegram: @syslinux

 , , , ,

raver ()

php-fpm

NGINX

listen 80;
server_name xxxx;
...

location ~ \.php$ {
   fastcgi_param  PHP_VALUE "upload_max_filesize=100M";
   include /etc/nginx/snippets/fastcgi-php.conf;   
}

upload_max_filesize устанавливается глобально на весь пул, как сделать, чтобы upload_max_filesize=10M было только у одного сайта, а у остальных по умолчанию 2M? Если я ставлю на 1 сайте это, то на других тоже меняются настройки!..

 , , ,

gobot ()

Хотлинкинг в связке Apache + Nginx

Приветствую всех участников форума.

Вопрос в том как правильно внести исключенные сайты в эту директиву;

valid_referers server_names ~(google|pinterest|reddit); if ($invalid_referer) { return 403; }

При добавлении таким способом (google|pinterest|reddit); мой сайт не отдает фотки google+ и pinterest, другие сайты не тестировал.

Я полный нуб по работе с Nginx да и серверными технологиями вообще, поэтому заранее извиняюсь за неправильную терминологию и ляпы.

Всем заранее огромное спасибо за советы, примеры, и рекомендации.

 ,

makol ()

Проблема смены урлов при переезде на новый движок

Привет всем! Уважаемые господа нужна ваша помощь - очень нужна :). Уже неделю пытаюсь найти решение. И так Дано:

  • куча источников от куда идет на сайт трафик, изменить там ссылки не возможно
  • и новый движек с НОВЫМ форматом урлов
  • Сервер на базе NGINX

Задача: Сделать карту роутов на базе nginx когда человек запрашивая старый урл, будет попадать на новый. И внимание, я знаю про что вы подумали - :) 302 ..., и нет Нельзя использовать ни какой вид редиректа. И это самое сложное. За ранее спасибо вам!

 , , ,

PavelSuslov ()

nginx.conf test failed

Добрый день. Подскажите, как лечить

nginx: configuration file /etc/nginx/nginx.conf test failed

В логах ругается только на ssl сертификат, но он не имеет значения.

 ,

Neoll ()

Не открываеться страница postfixadmin/setup.php

Не открываеться страница postfixadmin/setup.php а при попытке перейти скачивает файл status.php. В чем проблема? Думаю проблема может быть в nginx так как при статусе его выдает ошибку.

systemctl start nginx
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
[root@localhost ~]# journalctl -xe
Мар 29 12:13:57 localhost.localdomain named[1220]: error (connection refused) re
Мар 29 12:14:27 localhost.localdomain polkitd[596]: Registered Authentication Ag
Мар 29 12:14:27 localhost.localdomain systemd[1]: Starting The nginx HTTP and re
-- Subject: Начинается запуск юнита nginx.service
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Начат процесс запуска юнита nginx.service.
Мар 29 12:14:27 localhost.localdomain nginx[2318]: nginx: [emerg] a duplicate de
Мар 29 12:14:27 localhost.localdomain nginx[2318]: nginx: configuration file /et
Мар 29 12:14:27 localhost.localdomain systemd[1]: nginx.service: control process
Мар 29 12:14:27 localhost.localdomain systemd[1]: Failed to start The nginx HTTP
-- Subject: Ошибка юнита nginx.service
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Произошел сбой юнита nginx.service.
-- 
-- Результат: failed.
Мар 29 12:14:27 localhost.localdomain systemd[1]: Unit nginx.service entered fai
Мар 29 12:14:27 localhost.localdomain systemd[1]: nginx.service failed.
Мар 29 12:14:27 localhost.localdomain polkitd[596]: Unregistered Authentication 

[6]+  Stopped                 journalctl -xe

 , , , ,

SysError ()