Difference between revisions of "Nginx"

From HackerNet
Jump to: navigation, search
Line 8: Line 8:
 
== Tips n Trix ==
 
== Tips n Trix ==
 
Innan en reload/restart av nginx kör följande kommando för att testa om det är en giltig konfiguration:
 
Innan en reload/restart av nginx kör följande kommando för att testa om det är en giltig konfiguration:
  /etc/init.d/nginx configtest
+
  sudo nginx -t
 
Alternativt lägg till en alias för detta:
 
Alternativt lägg till en alias för detta:
  alias configtest='/etc/init.d/nginx configtest'
+
  alias configtest='sudo nginx -t'
  
 
'''Fail2ban'''
 
'''Fail2ban'''

Revision as of 08:44, 8 July 2015

nginx är en lättviktig webbserver och proxy.

Installation

sudo add-apt-repository ppa:nginx/stable && sudo apt-get update && sudo apt-get -y install nginx

Tips n Trix

Innan en reload/restart av nginx kör följande kommando för att testa om det är en giltig konfiguration:

sudo nginx -t

Alternativt lägg till en alias för detta:

alias configtest='sudo nginx -t'

Fail2ban

sudo nano /etc/fail2ban/jail.conf
[nginx-http-auth] 
enabled = true

WWW
Det är inte 90-talet längre, sluta använd www.

server {
   listen 80;
   server_name www.domän.se;
   return 301 $scheme://domän.se$request_uri;
}

Reverse Proxy

Nginx fungerar utmärkt som en reverse proxy för webbtrafik.

Exempel

 server {
 listen 80;
 server_name sub.domän.se;
 location / {
 proxy_pass http://10.0.0.10:3000;
 include /etc/nginx/proxy_params;
    }
 }

HTTPS

Konfigurationsexempel med säkerhet i fokus. https://mozilla.github.io/server-side-tls/ssl-config-generator/

 server {
 listen 443 ssl;
 server_name secure.domän.se;
 add_header Strict-Transport-Security max-age=15768000;
 add_header X-Frame-Options DENY;
 add_header X-Content-Type-Options nosniff;
 ssl_certificate         /path/to/cert.crt;
 ssl_certificate_key     /path/to/key.pem;
 ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
 ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!DSS:!RC4';
 ssl_prefer_server_ciphers on;
 ssl_dhparam /path/to/dhparam.pem;
 ...
 }

Generera DH-parametrar med tidtagning. Det tar lång tid!

time openssl dhparam -out /path/to/dhparam.pem 4096

Nyckelsäkerhet

Av säkerhetsskäl bör endast root har rätt att läsa de privata nycklarna. Nginx processer fungerar default enligt:

  • 1 nginx master process körs som root
  • x nginx workers körs som www-data

Nginx master process läser SSL-nycklarna, inte worker-processerna. Därför fungerar det utmärkt att köra följande.

sudo chown root:root certificate.key
sudo chmod 400 certificate.key

Redirect HTTP till HTTPS

 server {
 listen      80;
 server_name domän.se;
 
 # 301 = permanent redirect, 302 = temporary redirect
 return 301  https://domän.se$request_uri;
 }

Redirect HTTP till HTTPS, ej standardport

Nginx har en egen HTTP-statuskod för detta.

 server {
 listen      1234 ssl;
 server_name sub.domän.se;
 ...
 error_page  497 https://$host:1234$request_uri;
 ...
 }

SPDY

SPDY är ett protokoll utvecklat av Google för att göra HTTPS-handskakning lite snabbare. Alla moderna webbläsare har stöd för det.
Din nginx måste vara kompilerad med –with-http_spdy_module.

nginx -V
sudo sed -i -r 's/listen 443 ssl/listen 443 ssl spdy/g' /etc/nginx/sites-available/dinSSLsite
sudo service nginx reload

http://SPDYCheck.org

RTMP

Nginx rtmp modul fungerar utmärkt om man vill kunna streama något till 2 platser samtidigt tex till Twitch och Hitbox utan att behöva ha igång 2 instanser av tex OBS/Xsplit.

För att få in RTMP modulen så måste man compilera nginx från början.

apt-get update && apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

Hämta hem senaste versionen av nginx och rtmp modulen.

wget http://nginx.org/download/nginx-1.7.9.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

Packa upp filerna

tar -zxvf nginx-1.7.9.tar.gz
unzip master.zip
cd nginx-1.7.9

Lägg sedan till rtmp modulen i nginx.

./configure --add-module=../nginx-rtmp-module-master
make
make install

Om du inte fått några error så är nginx med rtmp modulen installerade.

Ändra och lägg till följande rader i din conf fil. /usr/local/nginx/conf/nginx.conf

rtmp {
	server {
		listen 1935;
		chunk_size 8192;

		application stream {
			live on;
			meta copy;
			push rtmp://live-ams.twitch.tv/app/live_XYZ_ZXY;
			push rtmp://live.hitbox.tv/push/username?key=XYZ;
		}
	}
}

För att starta nginx server skriv

/usr/local/nginx/sbin/nginx

För att stoppa nginx servern.

/usr/local/nginx/sbin/nginx

s stop-

Ställ in din klient att streama mot rtmp://<ip>/stream