Nginx HTTP Server - Fourth Edition
eBook - ePub

Nginx HTTP Server - Fourth Edition

Martin Fjordvald, Clement Nedelcu

Share book
  1. 348 pages
  2. English
  3. ePUB (mobile friendly)
  4. Available on iOS & Android
eBook - ePub

Nginx HTTP Server - Fourth Edition

Martin Fjordvald, Clement Nedelcu

Book details
Book preview
Table of contents
Citations

About This Book

Make the most of your infrastructure and serve pages faster than ever with Nginx.About This Book• Discover possible interactions between Nginx and Apache to get the best of both worlds• Learn to exploit the features offered by Nginx for your web applications• Get your hands on the most updated version of Nginx (1.13.2) to support all your web administration requirementsWho This Book Is ForThis book is a perfect match to web administrators who are interested in solutions to optimize their infrastructure. Whether you are looking into replacing your existing web server software or integrating a new tool to cooperate with applications that are already up and running, this book is your ideal resource. What You Will Learn• Download and install Nginx on your system• Prepare a basic configuration and test your initial setup• Discover the core functionality of the HTTP module• Make the most of first- and third-party Nginx modules• Set up Nginx to work with PHP, Python, and other applications• Learn how to set up Nginx to work with Apache• Fully replace Apache with Nginx• Optimize your architecture with threads or load balancing• Identify errors in configuration and learn basic troubleshooting techniques• Consult the exhaustive directive and module index for referenceIn DetailNginx is a lightweight HTTP server designed for high-traffic websites, with network scalability as the primary objective. With the advent of high-speed internet access, short loading times and fast transfer rates have become a necessity.This book is a detailed guide to setting up Nginx in ways that correspond to actual production situations: as a standalone server, as a reverse proxy, interacting with applications via FastCGI, and more. In addition, this complete direct reference will be indispensable at all stages of the configuration and maintenance processes. This book mainly targets the most recent version of Nginx (1.13.2) and focuses on all the new additions and improvements, such as support for HTTP/2, improved dynamic modules, security enhancements, and support for multiple SSL certificates. This book is the perfect companion for both Nginx beginners and experienced administrators. For beginners, it will take you through the complete process of setting up this lightweight HTTP server on your system and configuring its various modules so that it does exactly what you need quickly and securely. For more experienced administrators, this book provides different approaches that can help you make the most of your current infrastructure. Nginx can be employed in many situations, whether you are looking to construct an entirely new web-serving architecture or simply want to integrate an efficient tool to optimize your site loading speeds.Style and approachThis book aims to serve as a handy reference of all Nginx first-party modules and directives, allowing the reader to develop their own web configuration more efficiently.

Frequently asked questions

How do I cancel my subscription?
Simply head over to the account section in settings and click on “Cancel Subscription” - it’s as simple as that. After you cancel, your membership will stay active for the remainder of the time you’ve paid for. Learn more here.
Can/how do I download books?
At the moment all of our mobile-responsive ePub books are available to download via the app. Most of our PDFs are also available to download and we're working on making the final remaining ones downloadable now. Learn more here.
What is the difference between the pricing plans?
Both plans give you full access to the library and all of Perlego’s features. The only differences are the price and subscription period: With the annual plan you’ll save around 30% compared to 12 months on the monthly plan.
What is Perlego?
We are an online textbook subscription service, where you can get access to an entire online library for less than the price of a single book per month. With over 1 million books across 1000+ topics, we’ve got you covered! Learn more here.
Do you support text-to-speech?
Look out for the read-aloud symbol on your next book to see if you can listen to it. The read-aloud tool reads text aloud for you, highlighting the text as it is being read. You can pause it, speed it up and slow it down. Learn more here.
Is Nginx HTTP Server - Fourth Edition an online PDF/ePUB?
Yes, you can access Nginx HTTP Server - Fourth Edition by Martin Fjordvald, Clement Nedelcu in PDF and/or ePUB format, as well as other popular books in Informatik & Client-Server-Umgebung. We have over one million books available in our catalogue for you to explore.

Information

Year
2018
ISBN
9781788621977

Module Configuration

The true power of Nginx lies within its modules. The entire application is built on a modular system, and each module can be enabled or disabled at compile time. Some bring up simple functionalities, such as the autoindex module that generates a listing of the files in a directory. Some will transform your perception of a web server (such as the Rewrite module). Developers are also invited to create their own modules. A quick overview of the third-party module system can be found at the end of this chapter.
This chapter covers:
  • The Rewrite module, which does more than just rewrite URIs
  • The SSI module, a server-side scripting language
  • Additional modules enabled in the default Nginx build
  • Optional modules that must be enabled at compile time
  • A quick note on third-party modules

Rewrite module

This module, in particular, brings much more functionality to Nginx than a simple set of directives. It defines a whole new level of request processing that will be explained throughout this section.
Initially, the purpose of this module (as the name suggests) is to perform URL rewriting. This mechanism allows you to get rid of ugly URLs containing multiple parameters, for instance, http://example.com/article.php?id=1234&comment=32—such URLs being particularly uninformative and meaningless for a regular visitor.
Instead, links to your website will contain useful information that indicates the nature of the page you are about to visit. The URL given in the example becomes http://website.com/article-1234-32-US-economy-strengthens.html. This solution is not only more interesting for your visitors, but also for search engines. URL rewriting is a key element to Search Engine Optimization (SEO).
The principle behind this mechanism is simple: it consists of rewriting the URI of the client request after it is received, before serving the file. Once rewritten, the URI is matched against location blocks in order to find the configuration that should be applied to the request. The technique is further detailed in the coming sections.

Reminder on regular expressions

First and foremost, this module requires a certain understanding of regular expressions, also known as regexes or regexps. Indeed, URL rewriting is performed by the rewrite directive, which accepts a pattern followed by the replacement URI.
It is a vast topic; entire books are dedicated to explaining the ins and outs. However, the simplified approach that we are about to examine should be more than sufficient to make the most of the mechanism.

Purpose

The first question we must answer is: what is the purpose of regular expressions? To put it simply, the main purpose is to verify that a string of characters matches a given pattern. The pattern is written in a particular language that allows for defining extremely complex and accurate rules:
String
Pattern
Does it match?
Explanation
hello
^hello$
Yes
The string begins with character h (^h), followed by e, l, l, and then finishes with o (o$).
hell
^hello$
No
The string begins with character h (^h), followed by e, l, l, but does not finish with o.
Hello
^hello$
Depends
If the engine performing the match is case-sensitive, the string doesn't match the pattern.
This concept becomes a lot more interesting when complex patterns are employed, such as one that validates an email addresses: ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$. Validating a well-formed email address programmatically would require a great deal of code, while all of the work can be done with a single regular expression pattern matching.

PCRE syntax

The syntax that Nginx employs originates from the Perl Compatible Regular Expression (PCRE) library, which (if you remember Chapter 2, Basic Nginx Configuration) is a prerequisite for making your own build, unless you disable modules that make use of it. It's the most commonly used form of regular expression, and nearly everything you learn here remains valid for other language variations.
In its simplest form, a pattern is composed of one character, for example, x. We can match strings against this pattern. Does example match the pattern x? Yes, example contains the character x. It can be more than one specific character; the pattern [a-z] matches any character between a and z, or even a combination of letters and digits: [a-z0-9]. In consequence, the pattern hell[a-z0-9] validates the following strings: hello and hell4, but not hell or hell!.
You probably noticed that we employed the characters [ and ]. These are called metacharacters and have a special effect on the pattern. There is a total of 11 metacharacters, and all play a different role. If you want to create a pattern that actually contains one of these characters, you need to escape the character with a \ (backslash):
Metacharacter
Description
^
Beginning
The entity after this character must be found at the beginning:
  • Example pattern: ^h
  • Matching strings: hello, h, hh (anything beginning with h)
  • Non-matching strings: character, ssh
$
End
The entity before this character must be found at the end:
  • Example pattern: e$
  • Matching strings: sample, e, file (anything ending with e)
  • Non-matching strings: extra, shell
. (dot)
Any
Matches any character:
  • Example pattern: hell.
  • Matching strings: hello, hellx, hell5, and hell!
  • Non-matching...

Table of contents