nginx – pseudo-streaming video

Transkrypt

nginx – pseudo-streaming video
nginx – pseudo-streaming video
1. Pobrać
kompilację
serwera
nginx
http://nginx.org/download/nginx-1.7.0.zip
na
system
windows
i
rozpakować
2. W rozpakowanej paczce najważniejszymi elementami są:
a. \nginx.exe – plik wykonywalny serwera zajmuje ok 3MB.
b. \conf\nginx.conf – główny plik konfiguracyjny serwera
c. \logs\error.log – plik błędów (tu przede wszystkim można znaleźć błędy w
konfiguracji serwera oraz pozostałe, które wystąpią w trakcie pracy serwera)
d. \html – domyślny katalog z serwowaną przez serwer zawartością.
3. Server można uruchomić, przeładować lub zastopować przez uruchomienie w konsoli pliku
wykonywalnego nginx.exe z dodatkowymi atrybutami.
a. Uruchomienie serwera
cd nginx-1.7.0
start nginx.exe
b. Szybkie wyłączenie serwera
nginx.exe -s stop
c. Bezpieczne wyłączenie serwera
nginx.exe -s quit
d. Przeładowanie serwera (np. po zmianie konfiguracji)
nginx.exe -s reload
4. Konfiguracja serwera odbywa się przez edycję pliku \conf\nginx.conf w tym celu najlepiej
korzystać z edytora „Notepad++” , ale może to być każdy inny edytor tekstu.
Struktura pliku jest mapowana na strukturę w jakiej działa serwer po uruchomieniu. Można
utworzyć wiele serwerów wirtualnych.
Serwery wirtualne.
Każdy serwer wirtualny jest reprezentowany w pliku konfiguracyjnym przez struktury Server
,które muszą się zawierać w obiekcie http.
http {
server {
# Server configuration
}
server {
# Server configuration
}
}
Do najważniejszych parametrów każdego serwera wirtualnego należy port, na którym będzie
nasłuchiwał. Najczęściej rozróżniane są przez numer portu jak również przez adres ip lub
domeny na jakim nasłuchują. Serwer nginx analizuje nagłówek przychodzącego żądania, a
następnie na podstawie parametrów konfiguracyjnych przekazuje żądanie do odpowiedniego
serwera wirtualnego.
server {
listen
80 default_server;
...
}
server {
listen 127.0.0.1:8080;
...
}
server {
listen
80;
server_name example.org www.example.org;
...
}
Lokacje
Kolejną strukturą stającą się częścią konfiguracji serwera wirtualnego jest lokacja. Pozwala
ona modyfikować zachowanie serwera w trakcie obsługi żądań odnoszących się do
wskazanego w tej strukturze adresu. Domyśla lokacja odnosi się do głównego katalogu
serwera. Wskazuje ona fizyczny adres katalogu na dysku, gdzie znajduje się serwowana
zawartość. W przypadku poniżej katalogiem głównym (root) jest katalog html z katalogu
serwera. Dodatkowo można określić domyślne pliki (index),które mają być serwowane, jeśli
adres żądania wskazuje jedynie na katalog lokacji. W naszym przypadku są to pliki index.html
lub index.htm.
location / {
root
html;
index index.html index.htm;
}
Kolejny przykład przedstawia lokacje, gdzie pierwsza przekierowuje żądania w formie
serwera pośredniczącego (proxy) pod adres http://localhost:8080,a druga wiąże
żądania do wirtualnego katalogu /images z fizycznym katalogiem /data.
location / {
proxy_pass http://localhost:8080;
}
location /images/ {
root /data;
}
Adres lokacji można określić na kilka sposobów, poniżej kolejno przedstawiono przykłady:
 Pierwszy tradycyjny odnosi się do wirtualnego katalogu data i wszystkich jego
podkatalogów i plików.
 Drugi ze znakiem ‘=’ określa, że odnosi się jedynie do katalogu data pomijając jego
podkatalogi i pliki

Trzeci ze znakiem ‘~’ określa adres za pomocą wyrażenia regularnego. Znak ‘*’
oznacza, że dowolna ilość początkowych znaków jest pomijana, a całość wskazuje na
wszystkie adresy, które kończą się frazami .png lub .gif.
location /data {
...
}
location = /data {
...
}
location ~* \.(gif|png)$ {
...
}
Wyrażenia regularne
Bardzo przydatnym narzędziem jest możliwość stosowania wyrażeń regularnych w plikach
konfiguracyjnych serwera. Pozwalają one na elastyczniejsze określenie parametrów np.
adresu wirtualnego. Dodatkowo mogą pozwalać na wydobywanie i zapamiętywanie wartości
do użycia w dalszej części pliku konfiguracyjnego.
Pierwszy przykład zwróci kod 403 http request, jeśli wystąpi odwołanie do jakiegokolwiek
pliku .php z dowolnego katalogu: cahe, logs i tmp.
location ~*/ (cache|logs|tmp)/.*\.php$ {
return 403;
}
Znak ‘*’ oznacza, że zero lub wile znaków spełnia warunek. Wyrażenie„*//” oznacza, że
wyrażenie będzie zgodne z każdą kombinacją znaków kończących się znakiem ‘/’ np. „sdsds/”
lub „/”;
Następny przykład przedstawia możliwość wycięcia parametrów żądania za pomocą
wyrażenia regularnego.
location ~^/(.*)/(.*)\.(gif|png)$ {
auth_request /auth;
alias /images/$3/$2/$1;
}
Wszystkie znaki odpowiadające wyrażeniu regularnemu z nawiasów ‘(…)’ zostaje
zapamiętane pod postacią ‘$1’ gdzie numer oznacza numer nawiasu. Poniższy przykład
tworzy alias zamieniając wartości miejscami. Np. adres „dir1/file.gif” zostanie zamienione na
„images/gif/file/dir”
Moduł pseudo-streamingu wideo
W serwer nginx został wkompilowany moduł realizujący pseudo-streaming video
korzystający z kontenera video plików .mp4. Pseudo-streaming w głównej mierze polega na
wstępnym wyszukaniu i przesłaniu meta-danych pliku wideo, a następnie bezpośrednim
przesyłaniu zawartości pliku od wybranej pozycji z uwzględnieniem, że pierwszą klatką
powinna być klatka kluczowa (I-frame). Innymi słowami można powiedzieć, że wysyłamy
bezpośrednio plik od wybranej pozycji, ale wpierw doklejamy na początek meta-dane tak,
aby odtwarzać wiedział w jaki sposób wyświetlić materiał wideo.
Aby serwer rozpoczął pseudo-streaming wystarczy dopisać odpowiedni moduł do lokalizacji
ścieżki wirtualnej tak jak ma to miejsce poniżej. Od tego momentu do każdego żądania do
katalogu video będzie realizowane z użyciem modułu pseudo-streamingu.
location /video/ {
mp4;
mp4_buffer_size
mp4_max_buffer_size
}
1m;
5m;
Dodatkowym atutem takiej formy pseudo-streamingu jest wbudowane wsparcie w
większości przeglądarek dostępnych na rynku i brak wymagania codo playera oraz wtyczki
Adobe flash playera.
Dodatkowymi parametrami, które można przekazać wraz z żądaniu do serwera są parametry
start i end określają one zakres odtwarzanego filmu w sekundach. Poniższy przykład
odtworzy wideo od 33 sekundy nagrania, a zakończy odtwarzanie na 35 sekundzie filmu.
http://localhost:8011/video/sample.mp4?start=33&end=35
Zadanie 1
Proszę tak skonfigurować serwer, aby można było pliki wideo składować w jednym katalogu
fizycznym na dysku. Natomiast odwołując się do serwera należało odwołać się do hierarchii
katalogów w schemacie „/{kod_flimu}/{jakość}/{nazwa_filmu}.mp4” bez utraty tych
danych.
Zadanie 2 Dodatkowe
Proszę skonfigurować obsługę skryptów php w serwerze nginx.
Można
posłużyć
się
kompilacją
php
na
windows
ze
strony
http://windows.php.net/download/.
Możecie posłużyć się instrukcją http://www.nginxtips.com/how-to-install-php-with-nginxfor-windows/

Podobne dokumenty