Nginx

  • 2,782 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,782
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
94
Comments
0
Likes
6

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Whats NGINX?● Nginx (pronounced “Engine-X”) is an open source,high-performance:● HTTP server● Reverse proxy server for HTTP, SMTP, POP3 and IMAP protocols.
  • 2. Nginx - History● Author Igor Sysoev● started development of Nginx in 2002.● first public release in 2004, - rambler.ru● Built to address the C10K problem.● Website www.nginx.org.
  • 3. Why Nginx?● Stability● Performance● Security● Third party modules● Easy to configure
  • 4. Features● Static file serving.● SSL/TLS support.● Virtual hosts.● Reverse proxying.● Load balancing.● Compression.● Access controls.● URL rewriting.● Custom logging.● Server-side includes.● FLV streaming.● FastCGI.
  • 5. Why nginx is faster than apache?● Apache is a process-based server, while nginx is an event-based (asynchronous) web server.● Nginx is lighter then Apache.● Buffering.
  • 6. Architecture● Master+workers● Event driven● Non-blocking● Single-threaded● Highlymodular
  • 7. Master - Workers● Master -Monitor workers -Handle signals,notify workers (exit ,reconfiguration,update...)● Worker -Process client requests -Get cmd from master
  • 8. Master process
  • 9. Worker process
  • 10. Modular
  • 11. Event-driven Architecture (EDA)● EDA method is capable of handling more number of clients with less threads compared to conventional way (one thread for one client). Client 1 Client 2 worker Client N Client 1 Apache P.1 Apache P.2 Client 2 Apache P.N Client N
  • 12. Event● ngx_event_t -Read -Write -Timeout● Callbacks● Handlers -ngx_event_accept -ngx_process_events_and_timers -ngx_handle_read_event -ngx_handle_write_event● Posted events -Posted accept event queue -Posted event queue
  • 13. Non-blockingAsynchronous I/O allows a process to submit an I/O request without waiting for it to complete
  • 14. Virtual Server● Port● Address● Server name● Core server conf.
  • 15. Reconfig
  • 16. Upgrading
  • 17. Directives:● fair – send the request to the least busy backend server.● add_header – add custom headers to the response● limit_req_zone – limit requests for a client,prevent DOS attacks.● limit_conn_zone – limit concurent conections for a client.● stub_status – get current status of nginx.● error_pages – custom error page.● ip_hash;● backup;● If/set/rewrite.
  • 18. Configserver { user www www;listen 80; worker_processes 2; server {server_name example.com www.example.com; listen 80;root /usr/local/www/example.com; server_name example.com www.example.com;access_log /var/log/nginx/example.access.log; root /usr/local/www/example.com;error_log /var/log/nginx/example.error.log; access_log /var/log/nginx/example.access.log;location / { error_log /var/log/nginx/example.error.log;# Rewrite rules can go here} location / { # Rewrite rules can go herelocation ~* .(?:ico|css|js|gif|jpe?g|png)$ { }expires max;add_header Pragma public; location ~* .(?:ico|css|js|gif|jpe?g|png)$ {add_header Cache-Control "public, must-revalidate, proxy-revalidate"; expires max;} add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate";location ~ .php { }proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $remote_addr; location ~ .php$ { fastcgi_pass 127.0.0.1:9000;proxy_set_header Host $host; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;proxy_pass http://127.0.0.1:8080; include fastcgi_params;} }include drop.conf; include drop.conf;} }
  • 19. Front-End-(Nginx) and Back-End- (Apache) Advantages Client Frontend (NGINX) YES NO Static content HDD Backend (files) (Apache)
  • 20. Proxy balancingupstream backend {server 192.168.1.163:8081;server 192.168.1.159:80 weight=3; server 192.168.1.160:8080 max_fails=3fail_timeout=10s; }
  • 21. Nginx – Memcached - Apacheserver { location / { set $memcached_key $uri; memcached_pass 127.0.0.1:11211; default_type text/html; error_page 404 = @fallback; } location @fallback { proxy_pass backend; }}
  • 22. RewriteApache:RewriteCond %{HTTP_HOST} ^domain.com$ [NC]RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]Nginx:server { server_name www.domain.com; return 301 $scheme://domain.com$request_uri;}server { server_name domain.com; [...]}
  • 23. Nginx vs Apache
  • 24. http://wiki.nginx.org/