#Nginx Basics for Ubuntu To install sudo apt-get install nginx Make sure that Apache (if present) is not running. You can only have one listening on port 80. sudo apachectl stop To start nginx (Linux) sudo /etc/init.d/nginx start To stop nginx (Linux) sudo /etc/init.d/nginx stop To reload nginx config (Linux) sudo /etc/init.d/nginx reload Location of sites (Linux) /usr/share/nginx/www/ To check to see if it is running ps -ef | grep nginx To edit the nginx Config File sudo vim /etc/nginx/sites-available/default ##Sample file with virtual sites http://www.test.com http://www.example.com http://www.nodeapp.com http://localhost The hosts file can be edited at: sudo vim /etc/hosts ``` server { listen 80; listen [::]:80; root /home/www/test.com; server_name www.test.com; location / { index index.htm index.html; } } server { listen 80; listen [::]:80; root /home/www/example.com; server_name www.example.com; location / { index index.htm index.html; } } #Passthrough to node server application server { listen 80; listen [::]:80; root /home/www/nodeapp.com; server_name www.nodeapp.com; location / { #proxy_pass http://127.0.0.1:3001/api; proxy_pass http://127.0.0.1:8443; } server { listen 80 default_server; listen [::]:80 ipv6only=on default_server; root /usr/share/nginx/html; index index.html index.htm; # Make site accessible by specifying the wildcard servername server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.html; } } ``` ##Permissions Nginx normally runs under the www-data group. This group needs to have read access to the folder. ##More Advanced Sample from nginx site ``` user www www; worker_processes 2; pid /var/run/nginx.pid; # [ debug | info | notice | warn | error | crit ] error_log /var/log/nginx.error_log info; events { worker_connections 2000; # use [ kqueue | rtsig | epoll | /dev/poll | select | poll ] ; use kqueue; } http { include conf/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$gzip_ratio"'; log_format download '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$http_range" "$sent_http_content_range"'; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; client_header_buffer_size 1k; large_client_header_buffers 4 4k; gzip on; gzip_min_length 1100; gzip_buffers 4 8k; gzip_types text/plain; output_buffers 1 32k; postpone_output 1460; sendfile on; tcp_nopush on; tcp_nodelay on; send_lowat 12000; keepalive_timeout 75 20; # lingering_time 30; # lingering_timeout 10; # reset_timedout_connection on; server { listen one.example.com; server_name one.example.com www.one.example.com; access_log /var/log/nginx.access_log main; location / { proxy_pass http://127.0.0.1/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; client_body_temp_path /var/nginx/client_body_temp; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_send_lowat 12000; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_temp_path /var/nginx/proxy_temp; charset koi8-r; } error_page 404 /404.html; location /404.html { root /spool/www; charset on; source_charset koi8-r; } location /old_stuff/ { rewrite ^/old_stuff/(.*)$ /new_stuff/$1 permanent; } location /download/ { valid_referers none blocked server_names *.example.com; if ($invalid_referer) { #rewrite ^/ http://www.example.com/; return 403; } # rewrite_log on; # rewrite /download/*/mp3/*.any_ext to /download/*/mp3/*.mp3 rewrite ^/(download/.*)/mp3/(.*)\..*$ /$1/mp3/$2.mp3 break; root /spool/www; # autoindex on; access_log /var/log/nginx-download.access_log download; } location ~* ^.+\.(jpg|jpeg|gif)$ { root /spool/www; access_log off; expires 30d; } } } ```