LINUX.ORG.RU

73
Всего сообщений: 980

Динамическая установка X-Frame-Options в настройках nginx

Добрый день!

Не работали отчеты Карты в Я.Метрике - закоментил явную установку add_header X-Frame-Options в SAMEORIGIN в настройках nginx и Вебвизор заработал. Однако не хочется отключать защиту от кликджекинга совсем - установил рекомендуемый хелпом Метрики код в nginx.conf в блок http { server { location / {...}}}

set $frame_options '';
if ($http_referer !~ '^https?:\/\/([^\/]+\.)?(www.\site\.ru|webvisor\.com)\/'){set $frame_options 'SAMEORIGIN';}
add_header X-Frame-Options $frame_options;                 

Однако подгрузка сайта в тестовый фрейм все равно происходит - (<iframe src="https://www.site.ru«></iframe>) Подскажите плз куда рыть Система BitrixVM 7.2 на CentOS 7

 , ,

alexvy ()

Varnish vs nginx для «бытовых» нужд

Привет!

В последнее время накопилось несколько вопросов на интересные для меня темы. Все буду тащить на ЛОР :-)

Вопрос по сабжу, когда имеет смысл использовать Varnish как кеш для статики и прочий кеш, а когда nginx? Можно ли так тщательно настроить nginx, что Varnish будет не нужен? Какие задачи лучше всего решать именно с Varnish и нельзя решить с nginx?

 , , ,

Twissel ()

Помогите nginx location

не получается ограничить доступ только для одного приложения в apex

запрос вида http://192.168.1.119/apex/test/f?p=116

необходимо разрешить доступ только к этому приложению по аргументу 116

если делаю location /apex/test/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass https://192.168.26.119:8181; allow all; }

то получаю доступ ко всему

 , ,

EugeneF ()

Порт открыт, но не виден снаружи

если не туда, извините

Здарова, линуксоиды, у меня возникла проблема, с которой не справились даже 3 дня гугления. Итак, я решил сделать на своем ноуте на Ubuntu 17.10 небольшой веб-сервер на nginx'e. Про то, что там, говорить не буду, ибо это не относится к теме

Я сижу через ГПОН от небезызвестного МГТС'а, поэтому IP не статический, и именно поэтому я настроил роутер на NO-IP с адресом, допустим, example.hopto.org. Также я направил свой домен example.com через CNAME на exampe.hopto.org. То есть, получается примерно такая картина:

example.com -> example.hopto.org -> 1.2.3.4 -> <мой роутер> -> 192.168.0.105 (мой пк) -> nginx

С пк, на котором висит сервер, можно зайти на любой из этих адресов, появится приветствие моего сервера.

С другого устройства из локальной сети на сервер также можно зайти с любого из адресов, но

с внешнего устройства (вне локальной сети) появится либо ERR_UNREACHABLE, либо ошибка от squid'a. 2ip.ru/check-port также выдает «порт закрыт»

ОДНАКО, на роутере порт открыт и направлен на ПК (тык, тык) (для неверующих что локальный ип - 105: тык)

Как говорится, вопрос каково ***?

P.S. но если запустить сервер на винде (не нгинкс, но, к примеру, ВНЦ), и открыть порт, то он открывается наружу спокойно, так что не надо говорить про то, что не поддерживается провайдером/роутером. поддерживается

P.P.S. на линуксе ВНЦ тоже снаружи не виден

( инфа )

 , , ,

taizogem ()

Cвой https серфтификат на алиас

Есть основной домен с своим https сертификатом. domen.ru < свой https сертификат. Есть домен domenXXX.ru с своим сертификатом. Задача сделать domenXXX.ru алиасом domen.ru, и чтоб у каждого был свой сертификатом при этом. База nginx

 , ,

PavelSuslov ()

nginx + оптимальная конфигурация для раздачи статики

Всем доброго времени суток.

Итак вводная - нужно раздавать статику. centos 6.9 final, 4 ядра, какой-то объём свободной памяти. сборка nginx-а.

nginx version: nginx/1.13.8
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
Конфиг ресурса:
proxy_cache_path /dev/shm/nginx levels=1:2 keys_zone=static_cache:320m inactive=320m max_size=500M;
proxy_cache_min_uses 1;

server {
        listen 80;
        server_name static.host.com;;

        location / {
                proxy_cache static_cache;
                proxy_cache_valid 200 1y;
                proxy_set_header Host nocache.static.host.com;
                proxy_pass http://127.0.0.1;
                access_log off;
        }
}

server {
        listen 80;
        server_name nocache.static.host.com;

        location / {
                allow 127.0.0.1;
                deny all;
                root /home/user/sites/static.host.com/htdocs;
                access_log off;
                error_log /dev/null crit;
        }
}
Конфиг головы:
worker_processes 4;
events {
        use epoll;
        worker_connections 4096;
        multi_accept on;
}
http {
...
        sendfile            on;
        sendfile_max_chunk 512k;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;
        open_file_cache max=200000 inactive=20s;
        open_file_cache_valid 30s;
        keepalive_requests 100;
        reset_timedout_connection on;
        client_body_timeout 10;
        send_timeout 2;
...
}
Сам характер статики таков - около трети файлов около 2Кб, около 50% в районе 500Кб но меньше 512; остаток около 1Мб.

/dev/shm - это диск в памяти. Я рассуждаю так - фронт при получении запроса обращается либо в свой кеш, либо к бэкэнду; Канал на выдачу гарантированные 300Мбит/с; канал откуда ведётся тест - порядка 100Мбит/с, свободен при тесте ( 50 параллельных запросов ); но почему-то при тестовом заборе файлика размером 250Кб - я получаю максимальную скорость его отдачи около 1с, хотя ожидаю что-то не более чем 0.1с. Статику будут забирать в 20-30 параллельных коннектов, клиентов может прийти больше одного, сейчас меня это немного пугает ( клиент это unity-приложение ). Проблемой занялся, т.к. у разработчиков unity-приложения прогрузилась лишь половина изображений при тестовом пуске, кивают на меня.

 , ,

rumos ()

Не могу настроить статику на nginx

Здравствуйте

Несколько дней уже в ступоре. Пытаюсь открыть статическую веб-страничку через nginx. По адресу 192.168.1.3/cards открывается в любом браузере с любого девайса.

А вот по localhost/cards открывается только в файрфоксе; хром упорно говорит 404 Not found. ЧЯДНТ?

server {
	index index.html index.htm;

	server_name 127.0.0.1 localhost 192.168.1.*;

	autoindex on;
	
	# cards
	location /cards {
    	        alias /share/Projects/cards/cards/web;
	}

	# cards photos
	location /cards/photos {
                alias /share/Projects/cards/data/photos;
	}
}

 

makoven ()

Проблемы с изображениями NGINX SSL

Здравствуйте.
Сайт нормально работал, пока не поставил сертификат SSL.
Работал как прокси NGINX apache2
Сейчас сайт грузится, но браузер сообщает, что «Часть страницы (изображения) не защищены»
https://jihoz-vent.uz
Вот конфиги NGINX

server {
    listen 80;
    return 301 https://$host$request_uri;
}
server {
listen 443;
#listen [::]:80 default_server;
server_name jihoz-vent.uz;
#access_log /var/log/nginx.access_log;
ssl_certificate           /etc/nginx/ssl/Certificate.crt;
ssl_certificate_key       /etc/nginx/ssl/private/Privatekey.crt;
ssl on;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
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/;
index index.html index.php;
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}
location / {
proxy_pass http://127.0.0.1:81/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}

http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
ssl_session_cache   shared:SSL:10m;
ssl_session_timeout 5m;
ssl_stapling on;

gzip on;
gzip_disable "msie6";

gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
Подскажите пожалуйста, что не так? Спасибо!

 ,

rafaello ()

Анализатор логов nginx

Добрый день. Посоветуйте софт для анализа логов nginx от нескольких сайтов. Нужно что бы отчёт содержал сводную информацию по всем сайтам сразу.

 , ,

dsfgjkhs ()

схема отказоустойчивости и балансировки для веб-ресурса

Здравствуйте, подскажите пж-та: имеется веб-сайт, работающий на wordpress. Данный сайт работает на centos 6 на одном физическом сервере, в качестве фронтэнда используется nginx, backend - apache, БД postgresql. Данный веб-ресурс используется в корпоративной сети, в последнее время нагрузка и важность сайта значительно увеличились. Встал вопрос об обеспечении отказоустойчивости и балансировки нагрузки для данного сайта. Есть еще 2 аналогичных физических сервера, которые можно задействовать (hp dl380 g5). Какую схему оргаризации отказоустойчивости и балансировки вы можете посоветовать?

 , ,

wiremann ()

Load balancing c HAproxy и Nginx

HAproxy настроен с 2 load balancing серверами и 2-мя backend серверами с Nginx и удачно работает при использовании 80 порта и такой конфигурации:

haproxy.cfg

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private

        # Default ciphers to use on SSL-enabled listening sockets.
        # For more information, see ciphers(1SSL). This list is from:
        #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
        ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RS
A+3DES:!aNULL:!MD5:!DSS
        ssl-default-bind-options no-sslv3

defaults
        log     global
        mode    http                                                                                                                   
        option  httplog                                                                                                                
        option  dontlognull                                                                                                            
        option forwardfor                                                                                                              
        option http-server-close
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

frontend http
        bind ip-address-1:80
        default_backend my_pool

backend my_pool
        server backend-1 private-ip-address-1:80 check
        server backend-2 private-ip-address-2:80 check
        balance source

Конфигурация Nginx на backend-1

server {
    listen privat-ip-address-backend-1:80;
    allow private-ip-address-load-balancer-1;
    allow private-ip-address-load-balancer-2;
    deny all;

    server_name my-server.co;
    root /var/www/my-server.co/;

    # FORGE SSL (DO NOT REMOVE!)
    ssl_certificate /etc/nginx/ssl/my-server.co/server.crt;
    ssl_certificate_key /etc/nginx/ssl/my-server.co/server.key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DH
E-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:EC
DHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA25
6:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA
384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-D
SS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/nginx/dhparams.pem;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
                                                                                                                                       
    location = /favicon.ico { access_log off; log_not_found off; }                                                                     
    location = /robots.txt  { access_log off; log_not_found off; }
    access_log off;

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
                                                                                                                                       
    location ~ /\.ht {                                                                                                                 
        deny all;
    }
}                                                           

Но когда пытаюсь исп-ть 443 порт нормально в браузере открывается сайт только по http, при https появляется ошибка:

An error occurred during a connection to ip-address. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG

При этом конфигурация такая: haproxy.cfg

.......................................................
frontend http
        bind ip-address-1:443
        default_backend my_pool

backend my_pool
        server backend-1 private-ip-address-1:443 check
        server backend-2 private-ip-address-2:443 check
        balance source

Конфигурация Nginx на backend-1

server {
    listen privat-ip-address-backend-1:443;
    allow private-ip-address-load-balancer-1;
    allow private-ip-address-load-balancer-2;
    deny all;
................................................

Может нужно изменить ssl-default-bind-ciphers в haproxy.cfg?

 ,

gigantischer ()

Редиректы с Nginx

Доброго времени. Есть сервер который обеспечивает работу сайта и нескольких микросервисов. На основном сайте используется Django + gunicorn + Nginx. Есть страницы: https://example.com/page - она даёт ответ 200 и всё гут. https://example.com/page/ - отдаёт 404. Вопрос как со страниц со слешем сделать редирект на страницы без слеша посредством nginx? Заранее всем спасибо!

 , , , ,

q13 ()

OpenShift разворачиваем nginx

Всем привет!

На виртуалке стоит OpenShift Origin, подскажите примерный алгоритм действий, чтобы развернуть на нём nginx.

Я понимаю это примерно так:
Нужно создать сервис, затем в него уже задеплоить nginx с DockerHub, или же есть способ проще?

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

Просьба поправить, если в чем-то ошибся.

 , ,

Fess88 ()

nginx apashe post

Здравствуйте.

У меня связка Nginx + apache2. Сайт работает под https Хочу логировать POST запросы.

Вставляю строки в конфиг nginx

log_format logpost $request_body;
access_log /var/log/nginx/post.log logpost;

Он в лог post.log пишет только строку "-" В логе ошибок написал, что log_format только для «http»

Как мне все таки отследить POST запросы?

 , ,

files32 ()

nginx получить средний размер запроса в байтах

Добрый день!

Кто-нибудь знает как получить у nginx средний размер запроса в байтах для всех виртуальных хостов, когда используется много виртуальных хостов?

Есть ли примерный код или примерная конфигурация?

 

chemtech ()

Неэкспортируемый сертификат в nginx

Добрый день! Подскажите, можно ли как-то в linux разместить ssl сертификат для nginx'a, но так чтоб его нельзя было выгрузить, просмотреть, перекопировать или экспортировать? На сервак имеет доступ вендор через учетку с полными sudo-правами, вот от него поставили задачу уберечь этот серт, но при этом, чтоб nginx успешно мог работать с этим сертификатом.

 , ,

amkgi ()

добавление модулей без перекопеляции Nginx

Собственно сабж..

 

technobot ()

Проброс IP-адреса клиента на nginx через haproxy

Добрый вечер, есть HAProxy в качестве балансера, который слушает порты 80 и 443 и направляет на разные бекенды на nginx'е.

При этом сайты на nginx, видят, что запрос пришел с IP-адреса балансера. И в логах только IP балансера.

Конфиг HAProxy:

 [root@140 ~]# 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             
  group       haproxy
  daemon                          
  stats socket /var/lib/haproxy/stats
#---------------------------------------------------------
defaults
  mode     http   
  log      global  
  option   httplog   
  option   dontlognull
  option   http-server-close
  option   redispatch 
  retries  3 
  timeout http-request    10s
  timeout queue           1m
  timeout connect         10s        
  timeout client          1m
  timeout server          1m
  timeout http-keep-alive 10s
  timeout check           10s
  maxconn                 3000
#----------------------------------
# Конфигурация фронтенда http
#----------------------------------
frontend http_proxy
bind 192.168.1.140:80
option forwardfor header X-Real-IP
default_backend localhost

# 143.domen.ru
redirect scheme https code 301 if { hdr_end(host) -i 143.domen.ru } !{ ssl_fc }

# 180.domen.ru
acl 180.domen.ru hdr_dom(host) -i 180.domen.ru
use_backend 180.domen.ru if 180.domen.ru

#----------------------------------
# Конфигурация фронтенда https
#----------------------------------
frontend https-in
mode tcp
option tcplog
bind 192.168.1.140:443
option socket-stats
# option forwardfor header X-Real-IP
tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }
http-request add-header X-Forwarded-Proto https if { ssl_fc }

# 143.domen.ru
use_backend 143.domen.ru if { req_ssl_sni -i 143.domen.ru }

#----------------------------------
# Бекенды
#----------------------------------
backend localhost
server server1 127.0.0.1:8070

# 180.domen.ru
backend 180.domen.ru
server 180.domen.ru 192.168.1.180:80

# 143.domen.ru
backend 143.domen.ru
mode tcp
stick-table type binary len 32 size 30k expire 30m
acl clienthello req_ssl_hello_type 1
acl serverhello rep_ssl_hello_type 2
tcp-request inspect-delay 5s
tcp-request content accept if clienthello
tcp-response content accept if serverhello
stick on payload_lv(43,1) if clienthello
stick store-response payload_lv(43,1) if serverhello
option ssl-hello-chk
server stn_container 192.168.1.143:443

Нашла, что проброс нужно делать опцией

 option forwardfor header X-Real-IP

Но она работает только в режиме mode http, а у меня ssl ходит по tcp, сертификаты хранятся на nginx, т.е. HAProxy получает шифрованный запрос, перенаправляет его на бекендный nginx, а nginx уже морочается с сертификатами.

Как тут приделать опцию, чтобы nginx знал ip клиента, а не HAProxy?

 , ,

manik207 ()

Какой софт лучше выбрать для прокидывания порта

Приветствую всех.

Есть:

1. Машина Win с динамическим внешним ip - на ней стоит Apache.
2. Есть машина CentOS7 со статическим внешним ip - на ней стоит Nginx 
нужно - кидать http-запрос на машину CentOS7, далее Nginx должен перенаправлять запрос к машине Win на Apache, далее Apache отдает ответ назад Nginx, Nginx ответ конечному пользователю сделавшему запрос.

Какой вариант будет самым приемлемым, лучшим в плане простоты настройки, надежности связи без обрывов, быстродействия - пока что выделил из возможных SSH-туннель на машине Win и OpenVPN.

Самое главное - почему вообще такая схема - это потому, что на машине Win динамический внешний ip, а нужно из вне стабильно отправлять Http-запросы.

 , , , ,

stranger-ru ()

не работает новый путь в nginx

Поменял путь к каталогу.

  root /home/user/www;
#  root /usr/share/nginx/html;
И не открывает страницу, что не так?

 

u0atgKIRznY5 ()