4 / 4 / 0
Регистрация: 29.01.2019
Сообщений: 155
Записей в блоге: 1
1

Location

15.04.2019, 14:27. Показов 1035. Ответов 8

Author24 — интернет-сервис помощи студентам
Добрый день уважаемые коллеги!


С недавних пор начал юзать nginx

Столкнулся с проблемой location.

Собственно проблема заключается в следующем:

Вот как расположены директории в корне сайта.

/admin
index.php
..
/cms
..
/general
index.php
..
index.php



запросы выполняю вот так.


mysite.com/admin/ - это админка
mysite.com/gneral/ - это для общих нужд
mysite.com - index.php в корне сайта



в nginx запросы с любым URL всегда отправляются index.php в корень сайта.
Как сделать так что бы это работало как в Apache до этого ?

Или переписать логику так что бы все запросы проходили через корневой index.php???



Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2019, 14:27
Ответы с готовыми решениями:

Настрока location
Здравствуйте! Вроде все урезал максимально просто но не все работает. Есть 2 папки public и...

location в nginx
Требуется url типа /context/static/media/{secondUrlPart} перенаправить в директорию...

установка заголовоков в location
Как в location указать клиенту, что тот принимает картинку, аудио, видео и прочее...

Арифметические действия в location {}
Каким образом в loccation можно преобразовать url вида /media/photo/1048575 к директории...

8
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
15.04.2019, 14:43 2
Код
try_files $uri $uri/index.php /index.php;
1
4 / 4 / 0
Регистрация: 29.01.2019
Сообщений: 155
Записей в блоге: 1
15.04.2019, 15:19  [ТС] 3
Jewbacabra, Вот отрывок из конфига.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
server {
    server_name dev.mysite.com www.dev.mysite.com;
    ssl_certificate "/var/www/httpd-cert/rit/dev.mysite.com.crtca";
    ssl_certificate_key "/var/www/httpd-cert/rit/dev.mysite.com.key";
 
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    add_header Strict-Transport-Security "max-age=31536000;";
    ssl_dhparam /etc/ssl/certs/dhparam4096.pem;
    charset UTF-8;
    index index.php;
    disable_symlinks if_not_owner from=$root_path;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/dev.mysite.com/*.conf;
    access_log /var/www/httpd-logs/dev.mysite.com.access.log;
    error_log /var/www/httpd-logs/dev.mysite.com.error.log notice;
    ssi on;
    
    set $root_path /var/www/rit/data/www/dev.mysite.com;
    root $root_path;
    
    location / {
    
        try_files $uri $uri/ /index.php?$request_uri;
    
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
 
    }
    
    
    location @php {
    
        fastcgi_index index.php;
        
 
        fastcgi_pass unix:/var/www/php-fpm/rit.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
        
    }
    
 
}

заменил на try_files $uri $uri/index.php /index.php;

браузер теперь пытается сохранить файл ((

Добавлено через 7 минут
Jewbacabra, Всё ровно открывает корневой index.php
0
1127 / 678 / 408
Регистрация: 07.11.2015
Сообщений: 1,088
15.04.2019, 17:16 4
Popryduhin_, там в location @php нужно добавить fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
1
4 / 4 / 0
Регистрация: 29.01.2019
Сообщений: 155
Записей в блоге: 1
15.04.2019, 19:45  [ТС] 5
Emilien, Спасибо!
Jewbacabra, Спасибо!

Коллеги, я пытаюсь добить nginx

Дабы не плодить темы.
вот запрос следующего вида, как nginx научить обрабатывать?

//dev.mysite.com/general/language.getPackage?env=cms&packages=main,catalog,message,shop,account,profile&l ang=zh

Конфиг
0
1127 / 678 / 408
Регистрация: 07.11.2015
Сообщений: 1,088
15.04.2019, 20:28 6
Popryduhin_, если в try_files нужны GET параметры, то добавь $args.
Код
try_files $uri $uri/ /index.php$is_args$args;
1
4 / 4 / 0
Регистрация: 29.01.2019
Сообщений: 155
Записей в блоге: 1
15.04.2019, 20:40  [ТС] 7
Что то идёт не так...

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
set $root_path /var/www/rit/data/www/dev.mysite.com;
    root $root_path;
    
    location / {
    
        try_files $uri $uri/ /index.php?$is_args$args;
       
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
 
    }
    
    
    location @php {
    
        fastcgi_index index.php;
        
        fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@dev.mysite.com";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        
        fastcgi_pass unix:/var/www/php-fpm/rit.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
        
    }
сделал всё как посоветовали.
И вроде бы бы сохраняет параметры, но...

вот эта ссылка работает

//dev.mysite.com/method/product.getProducts?category_id=122&offset=0&count=100&lang=ru
эта ссылка работает с корневым index.php

//dev.mysite.com/index.php

а эта нет

//dev.mysite.com/general/language.getPackage?env=cms&packages=main,catalog,message,shop,account,profile&l ang=ru

//dev.mysite.com/general/index.php




если я запрашиваю следующим образом //dev.mysite.com/general/index.php всё работает, а если
//dev.mysite.com/general/language.getPackage уже нет.
0
1127 / 678 / 408
Регистрация: 07.11.2015
Сообщений: 1,088
15.04.2019, 22:01 8
Любые запросы к /general/ отправить в /general/index.php можно так:
Код
rewrite ^/(general)/  /$1/index.php;
Ставить прямо в блок server.

Если в папке /general/ есть файлы которые нужно раздавать, то так:
Код
    
    location /general/ {
        try_files $uri /general/index.php?$args;
    }
    
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    location ~ [^/]\.ph(p\d*|tml)$ {
    
        fastcgi_index index.php;
        
        fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@dev.mysite.com";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        
        fastcgi_pass unix:/var/www/php-fpm/rit.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;

    }
1
4 / 4 / 0
Регистрация: 29.01.2019
Сообщений: 155
Записей в блоге: 1
16.04.2019, 22:49  [ТС] 9
Всем спасибо!
Всё стало работать
0
16.04.2019, 22:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2019, 22:49
Помогаю со студенческими работами здесь

Не отрабатывает директива Location
Всем доброго. Изучаю nginx location директивы. Столкнулся с проблемой: server { listen...

Не срабатывает правило в location
Всем привет! Подскажите пожалуйста почему не срабатывает переадресация в location: location =...

Php как текст в одном location
Не могу понять почему в одном location не получается нормально отработать php. Конфиг...

Ребятки, поможите с location я первый раз
Работаю с nginx впервые! установил winginx. ставлю location /{root home/bitrixxx.loc/public_html;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru