Get in Touch

Course Outline

  1. HTTP/1.x Protocol
    1. Request and Response Formats
    2. Analyzing HTTP Conversations with tcpdump and Wireshark
    3. Inspecting HTTP Headers in a Web Browser
    4. Sending Requests via CURL
    5. Common Headers
    6. Request Pipelining
    7. Content Length and Chunked Encoding
    8. MIME Types
  2. Nginx Installation
    1. Installing Nginx from Debian Packages
    2. Nginx Variants Available in Debian and Ubuntu
    3. Installing Nginx from Source Code
    4. Starting Nginx
    5. Upgrading Nginx
  3. Nginx as a Static File Server
    1. General Structure of the Configuration File
    2. Setting Up Virtual Hosts
    3. Configuring Locations
    4. Location Lookup Order
    5. Setting Up Error Pages
    6. Issuing Redirects
    7. Other Forms of URL Rewriting
    8. Serving an Empty GIF Image
    9. Internal and Named Locations
    10. Overriding MIME Types
  4. Client-Side Performance Optimization
    1. Allowing Clients to Cache Resources
    2. The Vary Header
    3. Minimizing the Number of Requests
    4. Keep-Alive Connections
    5. Handling Dynamic Resource Changes
    6. How Web Frameworks Manage Static Files
  5. Content Post-Processing
    1. Gzip Compression
    2. Image Scaling
  6. Access Control
    1. Restricting File Access Based on IP Address
    2. Geographical Restrictions
    3. Hiding Version Control Directories and Private Files
    4. Basic Authentication
    5. Other Authentication Methods
    6. Combining Restrictions
    7. Secure Links
  7. Applying Limits
    1. Traffic Shaping
    2. Grouping Requests for Limiting Purposes
    3. Rate-Limiting Requests
    4. Restricting Simultaneous Connections
  8. Nginx as a Reverse Proxy
    1. Supported Upstream Protocols
    2. Handling Self-Signed Upstream SSL Certificates
    3. Passing Parameters to FastCGI and uWSGI Backends
    4. Proxying WebSocket Connections
    5. X-Accel-* Headers
    6. Modifying Headers Received and Sent by Upstream
  9. Language-Specific Reverse Proxy Setups
    1. PHP
    2. Python
    3. Ruby
  10. Nginx as an SSL Terminator
    1. Generating Self-Signed SSL Certificates
    2. Obtaining Certificates from Let's Encrypt
    3. Restricting Available Ciphers
    4. Working with Session Tickets
    5. Stapling OCSP Responses
    6. Verifying SSL Configuration
    7. Accepting Client-Side Certificates
    8. HTTP/2 Considerations
  11. Load Balancing with Nginx
    1. Defining Upstream Groups
    2. Sticky Sessions Using ip_hash
    3. Extra Features of Nginx Plus as a Load Balancer
    4. Alternatives to Nginx and Nginx Plus
    5. Placing Another Nginx Behind a Nginx Load Balancer
    6. Nginx Behind HAProxy or AWS Load Balancer
  12. Nginx as a Cache
    1. Instructing Nginx to Cache Pages
    2. How Nginx Reacts to Standard Caching-Related Headers
    3. Tunable Parameters of Caches
    4. Nginx Cache vs. Application-Level Cache
    5. Clearing the Cache
  13. Deploying Popular Web Applications with Nginx
    1. The List of Applications to Be Discussed Is Determined by the Trainer
  14. Logging
    1. Access Log and Error Log Files
    2. Specifying Custom Log Formats
    3. Tracking Slow Requests
    4. Optimizing Logging
    5. Log Rotation
    6. Log Analysis by External Programs
  15. Monitoring Nginx
    1. Nginx Stub Status Page
    2. Nginx Plus Extended Live Status Page
    3. Typical Monitoring Metrics and Alerts for Nginx
  16. [Optional] High Availability with Nginx¹
    1. Deploying Identical Static Content to Multiple Servers
    2. Configuration Sharing
    3. Fail-Over Using an Elastic/Virtual IP Address
    4. Setting Up VRRP with Keepalived
    5. Other High-Availability Stacks
    6. Nginx Plus Integration with Keepalived
  17. Common Mistakes and Security Issues Related to Nginx Configuration
  18. Common Performance Issues

¹ The High Availability section involves a network setup that may trigger intrusion detection systems or require setting up multiple virtual machines per participant (which is not required for other topics). Therefore, it is not provided by default.

Requirements

Participants should be proficient in using the Linux command line and possess a working knowledge of TCP/IP.

 21 Hours

Number of participants


Price per participant

Testimonials (1)

Upcoming Courses

Related Categories