Правило для Nginx

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

atwooo
Сообщения: 44

Правило для Nginx

Сообщение atwooo »

Подскажите пожалуйста, как написать правило для nginx
Суть задачи такая:
Мне нужно вот такого рода url переадресовывать по 301
https://site.ru/category/category-name// --> https://site.ru/category/category-name/
https://site.ru/product/product-name// --> https://site.ru/product/product-name/
По сути нужно убрать лишний / и переадресовать.
Заранее благодарен.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17904
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Правило для Nginx

Сообщение Bizdelnick »

https://nginx.org/ru/docs/http/ngx_http_rewrite_module.html#rewrite
Примерно так:

Код: Выделить всё

rewrite (.*)//$ $1/ permanent;
(не проверял)
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
bars
Сообщения: 362
ОС: BSD/LINUX

Re: Правило для Nginx

Сообщение bars »

А так?
У меня работает.
rewrite (.*?)//+(.*) $1/$2 permanent;
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:

atwooo
Сообщения: 44

Re: Правило для Nginx

Сообщение atwooo »

Не подумал еще одно спросить)) А в какой блок это нужно засунуть подскажите пожалуйста?
Добавлено (11:45):
Поторопился с вопросом.
Нашел где есть схожее правило... оно прямо в блоке server
server {
rewrite ^(.*)(\s|%20)$ $1 permanent;
Но к сожалению оба предложенных варианта не сработали(
Пробовал после существующей строки вставить вот это все...
rewrite (.*)//$ $1/ permanent;
rewrite ^(.*)//$ $1/ permanent;
rewrite (.*?)//+(.*) $1/$2 permanent;
rewrite ^(.*?)//+(.*) $1/$2 permanent;
rewrite ^(.*)//+(.*) $1/$2 permanent;
Спасибо сказали:

Аватара пользователя
bars
Сообщения: 362
ОС: BSD/LINUX

Re: Правило для Nginx

Сообщение bars »

atwooo писал(а):
23.01.2021 11:31
Не подумал еще одно спросить)) А в какой блок это нужно засунуть подскажите пожалуйста?
Перед самым первым локейшеном.
ХЗ, значит этот редирект покрывается другим редиректом.
Смотрите внимательно конфиг виртуал хоста.
Вы после того как добавили редирект перезагружали nginx?
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17904
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Правило для Nginx

Сообщение Bizdelnick »

Здесь был неправильный совет. Прошу прощения.
Последний раз редактировалось Bizdelnick 23.01.2021 16:41, всего редактировалось 1 раз.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

atwooo
Сообщения: 44

Re: Правило для Nginx

Сообщение atwooo »

Очень странно.
С учетом того что это первое что идет в конфигурации nginx в блоке server оно не работает.
Я попробовал поменять правило местами даже

Код: Выделить всё

   server {
        rewrite (.*)//+(.*) $1/$2 permanent;
        rewrite ^(.*)(\s|%20)$ $1 permanent;
        listen 443 ssl http2;
Поле reload второе правило rewrite ^(.*)(\s|%20)$ $1 permanent; продолжает работать а первое rewrite (.*)//+(.*) $1/$2 permanent; так и не ожило.
Спасибо сказали:

Аватара пользователя
bars
Сообщения: 362
ОС: BSD/LINUX

Re: Правило для Nginx

Сообщение bars »

Показывайте весь конфиг целиком.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17904
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Правило для Nginx

Сообщение Bizdelnick »

Bizdelnick писал:
23.01.2021 12:36
bars писал:
23.01.2021 10:01
rewrite (.*?)//+(.*) $1/$2 permanent;
? тут лишний
Прошу прощения, я совершенно забыл, что делает ? после квантификатора. Всё правильно bars написал.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

atwooo
Сообщения: 44

Re: Правило для Nginx

Сообщение atwooo »

Весь конфиг

Код: Выделить всё

# configuration file /etc/nginx/nginx.conf:
load_module modules/ngx_http_geoip2_module.so;
load_module modules/ngx_stream_geoip2_module.so;
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    use epoll;
    worker_connections 2048;
    multi_accept on;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {
    auto_reload 5m;
    $geoip2_data_country_code default=RU country iso_code;
    $geoip2_data_country_name country names en;
    }
    
    map $geoip2_data_country_code $allow_visit {
	default yes;
	################ Add blocked countries here by Country Code
	PS no; # Palestine
	VN no; # Vietnam
	EG no; # Egypt
	TH no; # Thailand
	PK no; # Pakistan
	ID no; # Indonesia
	IN no; # India
	MA no; # Morocco
	PE no; # Peru
	LK no; # Sri Lanka
	MY no; # Malaysia
	BD no; # Bangladesh
	BR no; # Brazil
	TR no; # Turkey
	AT no; # Austria
	MX no; # Mexico
	KE no; # Kenya
	PT no; # Portugal
	BI no; # Burundi
	SA no; # Saudi Arabia
	TN no; # Tunisia
	AZ no; # Azerbaijan
	AE no; # United Arab Emirates
	PH no; # Philippines
	TW no; # Taiwan
	DZ no; # Algeria
	MK no; # North Macedonia
	KR no; # South Korea
	MN no; # Mongolia
	CV no; # Cabo Verde
	LS no; # Lesotho
	ET no; # Ethiopia
	KH no; # Cambodia
	GH no; # Ghana
	ML no; # Mali
	LY no; # Libya
	MM no; # Myanmar
	ZA no; # South Africa
	RS no; # Serbia
	JO no; # Hashemite Kingdom of Jordan
	MG no; # Madagascar
	IQ no; # Iraq
	JP no; # Japan
	IR no; # Iran
	CM no; # Cameroon
	KW no; # Kuwait
	NP no; # Nepal
	AL no; # Albania
	BA no; # Bosnia and Herzegovina
	NG no; # Nigeria
	SD no; # Sudan
	CG no; # Congo Republic
	RO no; # Romania
	AR no; # Argentina
	RW no; # Rwanda
	LU no; # Luxembourg
            }

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" '
                      '"$connection_requests" "$request_time" '
                      '"$geoip2_data_country_name" "$geoip2_data_country_code" ';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    keepalive_requests 200;
    types_hash_max_size 2048;
    
    ssl_session_cache   shared:SSL:100m;
    ssl_session_timeout 1h;

    client_body_buffer_size 16k;
    client_header_buffer_size 4k;
    client_max_body_size 150m;
    client_body_timeout 10;
    client_header_timeout 10;
    large_client_header_buffers 16 8m;
    reset_timedout_connection on;
    send_timeout 10;
    
    charset utf-8;
    gzip on;
    gzip_comp_level    5;
    gzip_min_length    256;
    gzip_vary          on;
    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
    
	server {
		listen       80;
		server_name  localhost;
		
		location / {
			root   /usr/share/nginx/html;
			index  index.html index.htm;
			}
		
		error_page   500 502 503 504  /50x.html;
    
		location = /50x.html {
			root   /usr/share/nginx/html;
			}
	}

    server {
        include /etc/nginx/conf.d/bots.cfg;
        listen 80;
        server_name site4.ru www.site4.ru;
        return 301 https://site4.ru$request_uri;
        }

    server {
        include /etc/nginx/conf.d/bots.cfg;
        listen 80;
        server_name site2.ru www.site2.ru;
        return 301 https://site2.ru$request_uri;
        }
    
    server {
        include /etc/nginx/conf.d/bots.cfg;
        listen 80;
        server_name site3.ru www.site3.ru;
        return 301 https://site3.ru$request_uri;
        }
	
    server {
        include /etc/nginx/conf.d/bots.cfg;
        listen 80;
        server_name site.ru www.site.ru ftp.site.ru;
        return 301 https://site.ru$request_uri;
        }

    server {
        include /etc/nginx/conf.d/bots.cfg;
        listen 80;
        server_name spb.site.ru;
        return 301 https://spb.site.ru$request_uri;
        }

    server {
        include /etc/nginx/conf.d/bots.cfg;
        listen 80;
        server_name tver.site.ru;
        return 301 https://tver.site.ru$request_uri;
	}

    server {
        include /etc/nginx/conf.d/bots.cfg;
        listen 80;
        server_name yaroslavl.site.ru;
        return 301 https://yaroslavl.site.ru$request_uri;
	}

    server {
        include /etc/nginx/conf.d/bots.cfg;
        listen 80;
        server_name kaluga.site.ru;
        return 301 https://kaluga.site.ru$request_uri;
	}

    server {
        rewrite ^(.*)(\s|%20)$ $1 permanent;
        listen 443 ssl http2;
        server_name site4.ru www.site4.ru;
        ssl_certificate /etc/letsencrypt/live/site4.ru/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/site4.ru/privkey.pem; # managed by Certbot
        access_log  /var/log/nginx/site4.ru_access.log main;
        error_log   /var/log/nginx/site4.ru_error.log warn;
        root /var/www/site4.ru;
        include /etc/nginx/conf.d/bots.cfg;
        include /etc/nginx/conf.d/general-config.cfg;

        server_tokens off;

        location = /favicon.ico {
            alias /var/www/site4.ru/wa-data/public/site/data/site4.ru/favicon.ico;
            }

        location = /apple-touch-icon.png {
            alias /var/www/site4.ru/wa-data/public/site/data/site4.ru/apple-touch-icon.png;
            }

        location = /apple-touch-icon-precomposed.png {
            alias /var/www/site4.ru/wa-data/public/site/data/site4.ru/apple-touch-icon-precomposed.png;
            }

        location = /apple-touch-icon-120x120-precomposed.png {
            alias /var/www/site4.ru/wa-data/public/site/data/site4.ru/apple-touch-icon-120x120-precomposed.png;
            }

        location = /apple-touch-icon-120x120.png {
            alias /var/www/site4.ru/wa-data/public/site/data/site4.ru/apple-touch-icon-120x120.png;
            }

        location = /news/rss/ {
            return 404;
            }

        location ~* ^.+\.(jpg|jpeg|png|gif|ico|css|js|pdf|svg|woff|woff2)$ {
            access_log   off;
            expires      30d;
            valid_referers none blocked server_names ~(site4.ru|www.site4.ru);
                                if ($invalid_referer) {
                                return 444;
                                }
                    }
    }

    server {
        rewrite ^(.*)(\s|%20)$ $1 permanent;
        listen 443 ssl http2;
        server_name site2.ru www.site2.ru;
        ssl_certificate /etc/letsencrypt/live/site2.ru/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/site2.ru/privkey.pem; # managed by Certbot
        access_log  /var/log/nginx/site2.ru_access.log main;
        error_log   /var/log/nginx/site2.ru_error.log warn;
        root /var/www/site2.ru;
        include /etc/nginx/conf.d/bots.cfg;
        include /etc/nginx/conf.d/general-config.cfg;

        server_tokens off;

        location = /favicon.ico {
            alias /var/www/site2.ru/wa-data/public/site/data/site2.ru/favicon.ico;
            }

        location = /apple-touch-icon.png {
            alias /var/www/site2.ru/wa-data/public/site/data/site2.ru/apple-touch-icon.png;
            }

        location = /apple-touch-icon-precomposed.png {
            alias /var/www/site2.ru/wa-data/public/site/data/site2.ru/apple-touch-icon-precomposed.png;
            }

        location = /apple-touch-icon-120x120-precomposed.png {
            alias /var/www/site2.ru/wa-data/public/site/data/site2.ru/apple-touch-icon-120x120-precomposed.png;
            }

        location = /apple-touch-icon-120x120.png {
            alias /var/www/site2.ru/wa-data/public/site/data/site2.ru/apple-touch-icon-120x120.png;
            }

        location = /news/rss/ {
            return 404;
            }

        location ~* ^.+\.(jpg|jpeg|png|gif|ico|css|js|pdf|svg|woff|woff2)$ {
            access_log   off;
            expires      30d;
            valid_referers none blocked server_names ~(site2.ru|www.site2.ru);
                                if ($invalid_referer) {
                                return 444;
                                }
                    }
    }
    
    server {
        rewrite ^(.*)(\s|%20)$ $1 permanent;
        listen 443 ssl http2;
        server_name site3.ru www.site3.ru;
        ssl_certificate /etc/letsencrypt/live/site3.ru/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/site3.ru/privkey.pem; # managed by Certbot
        access_log  /var/log/nginx/site3.ru_access.log main;
        error_log   /var/log/nginx/site3.ru_error.log warn;
        root /var/www/site3.ru;
        include /etc/nginx/conf.d/bots.cfg;
        include /etc/nginx/conf.d/general-config.cfg;

        server_tokens off;

        location = /favicon.ico {
            alias /var/www/site3.ru/wa-data/public/site/data/site3.ru/favicon.ico;
            }

        location = /apple-touch-icon.png {
            alias /var/www/site3.ru/wa-data/public/site/data/site3.ru/apple-touch-icon.png;
            }

        location = /apple-touch-icon-precomposed.png {
            alias /var/www/site3.ru/wa-data/public/site/data/site3.ru/apple-touch-icon-precomposed.png;
            }

        location = /apple-touch-icon-120x120-precomposed.png {
            alias /var/www/site3.ru/wa-data/public/site/data/site3.ru/apple-touch-icon-120x120-precomposed.png;
            }

        location = /apple-touch-icon-120x120.png {
            alias /var/www/site3.ru/wa-data/public/site/data/site3.ru/apple-touch-icon-120x120.png;
            }

        location = /news/rss/ {
            return 404;
            }

        location ~* ^.+\.(jpg|jpeg|png|gif|ico|css|js|pdf|svg|woff|woff2)$ {
            access_log   off;
            expires      30d;
            valid_referers none blocked server_names ~(site3.ru|www.site3.ru);
                                if ($invalid_referer) {
                                return 444;
                                }
                    }
    }

    server {
#	rewrite ^(.*)//+(.*) $1/$2 permanent; 	
        rewrite ^(.*)(\s|%20)$ $1 permanent;
	listen 443 ssl http2;
        server_name site.ru www.site.ru ftp.site.ru spb.site.ru tver.site.ru yaroslavl.site.ru kaluga.site.ru;
        ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem; # managed by Certbot
        access_log  /var/log/nginx/site.ru_access.log main;
        error_log   /var/log/nginx/site.ru_error.log warn;
        root /var/www/site.ru;
        include /etc/nginx/conf.d/bots.cfg;
        include /etc/nginx/conf.d/phpmyadmin.cfg;
        include /etc/nginx/conf.d/general-config.cfg;
        
        server_tokens off;

        location = /favicon.ico {
            alias /var/www/site.ru/wa-data/public/site/data/site.ru/favicon.ico;
            }
    
        location = /apple-touch-icon.png {
            alias /var/www/site.ru/wa-data/public/site/data/site.ru/apple-touch-icon.png;
            }

        location = /apple-touch-icon-precomposed.png {
            alias /var/www/site.ru/wa-data/public/site/data/site.ru/apple-touch-icon-precomposed.png;
            }

        location = /apple-touch-icon-120x120-precomposed.png {
            alias /var/www/site.ru/wa-data/public/site/data/site.ru/apple-touch-icon-120x120-precomposed.png;
            }
    
        location = /apple-touch-icon-120x120.png {
	    alias /var/www/site.ru/wa-data/public/site/data/site.ru/apple-touch-icon-120x120.png;
            }
        
        location = /news/rss/ {
	    return 404;
            }
	
        location ~* ^.+\.(jpg|jpeg|png|gif|ico|css|js|pdf|svg|woff|woff2)$ {
            access_log   off;
            expires      30d;
            valid_referers none blocked server_names ~(site.ru|www.site.ru|spb.site.ru|tver.site.ru|yaroslavl.site.ru|kaluga.site.ru|yandex|google|yahoo|bing|rambler|facebook|mail);
				if ($invalid_referer) {
		        	return 444;
		        	}
		    }
    }
}

# configuration file /etc/nginx/mime.types:

types {
    text/html                                        html htm shtml;
    text/css                                         css;
    text/xml                                         xml;
    image/gif                                        gif;
    image/jpeg                                       jpeg jpg;
    application/javascript                           js;
    application/atom+xml                             atom;
    application/rss+xml                              rss;

    text/mathml                                      mml;
    text/plain                                       txt;
    text/vnd.sun.j2me.app-descriptor                 jad;
    text/vnd.wap.wml                                 wml;
    text/x-component                                 htc;

    image/png                                        png;
    image/svg+xml                                    svg svgz;
    image/tiff                                       tif tiff;
    image/vnd.wap.wbmp                               wbmp;
    image/webp                                       webp;
    image/x-icon                                     ico;
    image/x-jng                                      jng;
    image/x-ms-bmp                                   bmp;

    font/woff                                        woff;
    font/woff2                                       woff2;

    application/java-archive                         jar war ear;
    application/json                                 json;
    application/mac-binhex40                         hqx;
    application/msword                               doc;
    application/pdf                                  pdf;
    application/postscript                           ps eps ai;
    application/rtf                                  rtf;
    application/vnd.apple.mpegurl                    m3u8;
    application/vnd.google-earth.kml+xml             kml;
    application/vnd.google-earth.kmz                 kmz;
    application/vnd.ms-excel                         xls;
    application/vnd.ms-fontobject                    eot;
    application/vnd.ms-powerpoint                    ppt;
    application/vnd.oasis.opendocument.graphics      odg;
    application/vnd.oasis.opendocument.presentation  odp;
    application/vnd.oasis.opendocument.spreadsheet   ods;
    application/vnd.oasis.opendocument.text          odt;
    application/vnd.openxmlformats-officedocument.presentationml.presentation
                                                     pptx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                     xlsx;
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                     docx;
    application/vnd.wap.wmlc                         wmlc;
    application/x-7z-compressed                      7z;
    application/x-cocoa                              cco;
    application/x-java-archive-diff                  jardiff;
    application/x-java-jnlp-file                     jnlp;
    application/x-makeself                           run;
    application/x-perl                               pl pm;
    application/x-pilot                              prc pdb;
    application/x-rar-compressed                     rar;
    application/x-redhat-package-manager             rpm;
    application/x-sea                                sea;
    application/x-shockwave-flash                    swf;
    application/x-stuffit                            sit;
    application/x-tcl                                tcl tk;
    application/x-x509-ca-cert                       der pem crt;
    application/x-xpinstall                          xpi;
    application/xhtml+xml                            xhtml;
    application/xspf+xml                             xspf;
    application/zip                                  zip;

    application/octet-stream                         bin exe dll;
    application/octet-stream                         deb;
    application/octet-stream                         dmg;
    application/octet-stream                         iso img;
    application/octet-stream                         msi msp msm;

    audio/midi                                       mid midi kar;
    audio/mpeg                                       mp3;
    audio/ogg                                        ogg;
    audio/x-m4a                                      m4a;
    audio/x-realaudio                                ra;

    video/3gpp                                       3gpp 3gp;
    video/mp2t                                       ts;
    video/mp4                                        mp4;
    video/mpeg                                       mpeg mpg;
    video/quicktime                                  mov;
    video/webm                                       webm;
    video/x-flv                                      flv;
    video/x-m4v                                      m4v;
    video/x-mng                                      mng;
    video/x-ms-asf                                   asx asf;
    video/x-ms-wmv                                   wmv;
    video/x-msvideo                                  avi;
}

# configuration file /etc/nginx/conf.d/bots.cfg:
if ($http_user_agent ~* adbeat.com/policy|ZmEu|libwww-perl|SemrushBot|DotBot|rogerbot|nmap|nikto|wikto|sf|sqlmap|bsqlbf|acunetix|havij|appscan|wpscan|MJ12bot|ApacheBench|WordPress|DirBuster|perl|python|w3af|WhatWeb|Arachni|XSpider|Hydra|Evasions|visionutils|Synapse|HTTP_Request2|GuzzleHttp|Paros|Synapse|Python-urllib|AhrefsBot|Unknown|Opera/9.80|Mozilla/4.0|Pinterestbot|VelenPublicWebCrawler){
    return 406;
    }

# configuration file /etc/nginx/conf.d/general-config.cfg:
        index index.php;
        try_files $uri $uri/ /index.php?$query_string;

        location /index.php {
            include /etc/nginx/fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root/index.php;
            }
            
        location /install.php {
			include /etc/nginx/fastcgi_params;
        	}
        	
        location ~ /(api|cli|wa|test).php {
            fastcgi_split_path_info  ^(.+\.php)(.*)$;
            include /etc/nginx/fastcgi_params;
            }
            
		location ~ /(oauth.php|link.php|payments.php) {
			try_files $uri $uri/ /index.php?$query_string;
        	}
        	
        location  ~ /sm-(callback|mail-autoloader|scripts)  {
            fastcgi_split_path_info  ^(.+\.php)(.*)$;
            include /etc/nginx/fastcgi_params;
            }
	
        location ^~ /wa-data/protected/ {
            internal;
            }

        location ~ /wa-content {
            allow all;
            }

		location ^~ /(wa-apps|wa-plugins|wa-system|wa-widgets)/.*/(lib|locale|templates)/ {
        	deny all;
        	}

        location ~* ^/wa-(cache|config|installer|log|system)/ {
            return 403;
            }

		location ~* ^/wa-data/public/contacts/photos/[0-9]+/ {
        	access_log off;
            expires  30d;
        	error_page   404  =  @contacts_thumb;
        	}
		
        location @contacts_thumb {
			include /etc/nginx/fastcgi_params;
			fastcgi_param  SCRIPT_NAME  /wa-data/public/contacts/photos/thumb.php;
			fastcgi_param  SCRIPT_FILENAME  $document_root/wa-data/public/contacts/photos/thumb.php;
            }
        
        location ~* ^/wa-data/public/photos/[0-9]+/ {
			access_log   off;
			expires      30d;
			error_page   404  =  @photos_thumb;
			}

		location @photos_thumb {
        	include /etc/nginx/fastcgi_params;
        	fastcgi_param  SCRIPT_NAME  /wa-data/public/photos/thumb.php;
        	fastcgi_param  SCRIPT_FILENAME  $document_root/wa-data/public/photos/thumb.php;
        	}
            
        location ~* ^/wa-data/public/shop/products/[0-9]+/ {
            access_log   off;
            expires      30d;
            error_page   404  =  @shop_thumb;
            }

        location @shop_thumb {
            include /etc/nginx/fastcgi_params;
            fastcgi_param  SCRIPT_NAME  /wa-data/public/shop/products/thumb.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root/wa-data/public/shop/products/thumb.php;
            }

        location ~* ^/wa-data/public/shop/promos/[0-9]+ {
            access_log   off;
            expires      30d;
            error_page   404  =  @shop_promo;
            }

        location @shop_promo {
            include /etc/nginx/fastcgi_params;
            fastcgi_param  SCRIPT_NAME  /wa-data/public/shop/promos/thumb.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root/wa-data/public/shop/promos/thumb.php;
            }
        
        location ~* ^/wa-data/public/mailer/files/[0-9]+/ {
            access_log   off;
            error_page   404  =  @mailer_file;
            }

        location @mailer_file {
            include /etc/nginx/fastcgi_params;
            fastcgi_param  SCRIPT_NAME  /wa-data/public/mailer/files/file.php;
            fastcgi_param  SCRIPT_FILENAME $document_root/wa-data/public/mailer/files/file.php;
            }

# configuration file /etc/nginx/fastcgi_params:

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_FILENAME	  $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;
fastcgi_param  PATH_INFO		  $fastcgi_path_info;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

fastcgi_param COUNTRY_CODE $geoip2_data_country_code;
fastcgi_param COUNTRY_NAME $geoip2_data_country_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_param  REDIRECT_STATUS	600;
fastcgi_read_timeout	3600;
fastcgi_buffers 128 2048k;
fastcgi_buffer_size 2048k;
# configuration file /etc/nginx/conf.d/phpmyadmin.cfg:
        location /phpmyadmin {
                index index.php;
                root /var/www/site.ru/;

        location ~ /phpmyadmin(/.*\.php) {
            include /etc/nginx/fastcgi_params;
            root /usr/share/;
            fastcgi_index   index.php;
            fastcgi_param SERVER_NAME 127.0.0.1;
            fastcgi_param SCRIPT_FILENAME /var/www/site.ru/phpmyadmin$1;
            }

        location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
            root /var/www/site.ru/;
            }
        }
Спасибо сказали:

Аватара пользователя
bars
Сообщения: 362
ОС: BSD/LINUX

Re: Правило для Nginx

Сообщение bars »

Добавьте это rewrite (.*?)//+(.*) $1/$2 permanent;
И сделайте жесткую перезагрузку nginx restart а не reload.
И в секция http добавьте в самое начало.
merge_slashes off;
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:

atwooo
Сообщения: 44

Re: Правило для Nginx

Сообщение atwooo »

Огромное спасибо!
Помогло и без жесткой перезагрузки даже))
Спасибо сказали:

atwooo
Сообщения: 44

Re: Правило для Nginx

Сообщение atwooo »

Всем доброго дня.
И снова вопрос(
Подскажите пожалуйста как перенаправить URL.
Тут просто не понятно толи нужно вырезать из URL часть? толи сделать 301
https://site.ru/search/?query=поисковой_запрос - Это старый вариант обращения к строке поиска на сайте
https://site.ru/search/поисковой_запрос/ - Это новый вариант обращения к строке поиска на сайте
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17904
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Правило для Nginx

Сообщение Bizdelnick »

atwooo писал(а):
17.02.2021 10:23
https://site.ru/search/?query=поисковой_запрос - Это старый вариант обращения к строке поиска на сайте
https://site.ru/search/поисковой_запрос/ - Это новый вариант обращения к строке поиска на сайте
Как-то так, наверное (не проверял):

Код: Выделить всё

location = /search/ {
  if ($arg_query) {
    rewrite ^/search/ /search/$arg_query/? permanent;
  }
}
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

atwooo
Сообщения: 44

Re: Правило для Nginx

Сообщение atwooo »

Огромное спасибо!
Работает!
Добавлено (12:36):
Есть еще такой вопрос.
Подскажите пожалуйста - как сделать конфигурацию по умолчанию.
У меня есть блок

Код: Выделить всё

server {
		listen       80;
		server_name  localhost;
		
		location / {
			root   /usr/share/nginx/html;
			index  index.html index.htm;
			}
		
		error_page   500 502 503 504  /50x.html;
    
		location = /50x.html {
			root   /usr/share/nginx/html;
			}
	}
В блоке listen 80; я добавил default_server
Итого этот блок теперь выглядет вот так:

Код: Выделить всё

server {
        listen       80 default_server;
        server_name  _ localhost;

        location / {
                root   /usr/share/nginx/html;
                index  index.html index.htm;
                }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {
        root   /usr/share/nginx/html;
                }
        }
Я ожидаю что любое обращение которое не не описано в конфигурации, будет уходить на этот блок.
А именно к примеру у Вас есть какой то домен где вы создаете какую то запись типа А которая к моим сайтам не имеет отношение. При обращении к этому домену должен открыться default_server.
На практике работает это вот так.
Если обращаться по ip (их у сервера 2) то действительно откроется default_server.
А если обратиться по домену которого нет в конфигурации то откроется первый НЕ default_server.
Суть вопроса - как сделать чтоб при любом обращении к серверу который не описан в конфигурации запросы шли в default_server?
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17904
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Правило для Nginx

Сообщение Bizdelnick »

Странно. А если вместо 80 указать *:80?
Кстати, какая версия nginx?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: