Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Настройка nginx (https://javascript.ru/forum/offtopic/59995-nastrojjka-nginx.html)

Mаxmaxmаximus 06.12.2015 04:33

Настройка nginx
 
Хочу чтобы была папка public_html и от туда брались все файлы
И чтобы рядом с ней лежала папка storage на одном уровне.
И если человек запросит site.ru/storage/image.png
то оно искалось бы не в public_html а в storage

Неужели такое элементарное действие нельзя провернуть?


ВОТ ЭТО банально не работает:

Код:

        location / {
            root  ../localhost/public;
            index  index.html index.htm;
        }

        location  /storage {
            root  ../localhost/storage;
        }


Mаxmaxmаximus 06.12.2015 04:52

В итоге у меня возгарелся пукан и я сделал просто сабдомен с хранилещем

Код:

server {
        listen      80;
        server_name  storage.uaz.local;
                root  C:/localhost/storage;
}

server {
        listen      80;
        server_name  uaz.local;
                root  C:/localhost/public;
               
        location / {
                        index  index.html index.htm;
        }
}


Теперь всякие картинки подгружяются красиво storage.site.ru/vsddsgfsgsdfsdfs.jpg
НО мне непонятно почему енджинекс не переопределяет рут если локейшен совпадает с url, вернее он переопределяет, но только внутри public/ а не вне неё
еси вне неё, то просто не работает

Mаxmaxmаximus 06.12.2015 20:48

В итоге короче вообще оставил nginx как есть а nodejs повесил на порт 8080 и общение с api идет по сокетам/

nginx быстро отдает статику, node быстро вычисляет динамику. красота.

a26cf84d 07.12.2015 20:22

Цитата:

Сообщение от Mаxmaxmаximus
nodejs повесил на

proxy_pass и вешаешь куда нада!
location /socket.io/ {
        
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "upgrade";
		proxy_http_version 1.1;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $host;
		proxy_pass [url]http://127.0.0.1:8000;[/url]
	}


[url] - только выкинь.

MiksIr 07.12.2015 21:42

Цитата:

Сообщение от Mаxmaxmаximus
НО мне непонятно почему енджинекс не переопределяет рут если локейшен совпадает с url, вернее он переопределяет, но только внутри public/ а не вне неё

Код:

      root  C:/localhost/public/;

      location / {
            index  index.html index.htm;
        }

        location  /storage/ {
            root C:/localhost/;
        }

А вот если часть URI не совпадает с именем на диске, нужно использовать не root, а alias

Код:

      root  C:/localhost/public/;

      location / {
            index  index.html index.htm;
        }

        location  /storage/ {
            alias C:/localhost/superstorage/;
        }


Mаxmaxmаximus 08.12.2015 02:24

Цитата:

Сообщение от a26cf84d
и вешаешь куда нада!

И какой же смысл обрабатывать запросы сначала nginx а не нодой напрямую? еси нода все ровно чисто динамику отдает котрую не нужно кешировать? типа чтобы сжимать nginx ом данные возвращеныне от ноды?

Цитата:

Сообщение от MiksIr
А вот если часть URI не совпадает с именем на диске, нужно использовать не root, а alias

Оо вот это красавчик, я нагуглил про него но так и не подумал что это азначает, я думал это алиасы доменов типа. спасиб тебе мил человек.

Mаxmaxmаximus 08.12.2015 06:33

MiksIr, о, слушай, а как сделать типа если файл не существует то отдавай главную страничку но url не меняй, делай вид будто бы она находится по тому адресу который запросили.


ну то есть если запросят хоть site.ru/sdfgfddgdf=fg=====444===44

то чтобы он все ровно главную страничку отдал и при том url такой же остался какой запрашивали.
но при том что файла "sdfgfddgdf=fg=====444===44" не существует

У меня просто синглпейдж апликейшен и роутинг происходит уже внутри html странички яваскриптом, с анимациями и прочей фигней) а при навигации используется history api и надо чтобы если чел нажмет f5 то сервер ему все время одну и ту же index.html страничку из корня отдавал. при условии что файла по url не существует (ну чтобы стили там могли подгрузиться и все такое)

a26cf84d 08.12.2015 10:45

Цитата:

Сообщение от Mаxmaxmаximus
нода все ровно чисто динамику отдает котрую не нужно кешировать?

Нода вполне себе кеширует, если надо, быстро, просто, надежно. Кэширование - не программа, а алгоритм.

Цитата:

Сообщение от Mаxmaxmаximus
какой же смысл

сам для себя реши.

Mаxmaxmаximus 08.12.2015 11:40

Цитата:

Сообщение от a26cf84d
Нода вполне себе кеширует, если надо, быстро, просто, надежно

гораздо дороже чем nginx

Цитата:

Сообщение от a26cf84d
сам для себя реши.

но зачем мне решать смысл какого то действия которое делаю не я, карл?



п.с. мне кажется я понял какие люди пишут ответы на "вопросы и ответы мейл") вот пациент выше яркий пример)

a26cf84d 08.12.2015 12:01

Цитата:

Сообщение от Mаxmaxmаximus
гораздо дороже чем nginx

это твоя выдумка. вариантов кэширования много, ты похоже про них мало знаешь.


Часовой пояс GMT +3, время: 09:24.