Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
sailing:nginx [2023/12/01 07:46] – willy | sailing:nginx [2024/02/01 07:00] (current) – removed willy | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | Prev to: [[sailing: | ||
- | Next to: [[sailing: | ||
- | |||
- | ---- | ||
- | ====== The Reverse Proxy concept ====== | ||
- | |||
- | Most of the tools described in these pages have web-based interfaces. It is **not** a good idea to access them directly for quite many reasons: | ||
- | * Scalability, | ||
- | * Security, since the tools don't come with a fully featured web server | ||
- | * Access control, since the tools don't come with a fully featured web server | ||
- | * Configuration, | ||
- | * Organization, | ||
- | |||
- | In other words, you want a reverse-proxy even if you are going to use this setup only from inside your home. More so, if you plan to have remote access, a reverse-proxy is a must. But what is a reverse-proxy? | ||
- | |||
- | There are lots of possible software to use. Basically any web server can act as a reverse proxy. Some are more suited than others, and my choice is on NGINX for a few reasons: | ||
- | * Much easier than [[https:// | ||
- | * Much lighter and less features full than Apache | ||
- | * More complex and more features than [[https:// | ||
- | * Fully integrated in [[https:// | ||
- | * I don't personally know how to setup other similar tools | ||
- | |||
- | In general NGINX is fully featured but still very lightweight and secure HTTP server that shines as reverse-proxy. If you need to add more features, like [[https:// | ||
- | |||
- | |||
- | ===== Installing NGINX ===== | ||
- | NGINX installation on the home server is pretty straightforward, | ||
- | |||
- | So create the file **/ | ||
- | < | ||
- | app-misc/ | ||
- | www-servers/ | ||
- | </ | ||
- | |||
- | (the first line is needed at the time of writing this page, YMMV) | ||
- | |||
- | Note: you might want to tweak the second line to your needs, see the [[https:// | ||
- | |||
- | A brief explanation of the above USE flags: | ||
- | * // | ||
- | * //sub// is used to allow substitutions inside the pages proxied, to fix web applications that don't play well with reverse-proxies | ||
- | * //gunzip// is used to unzip the requests and let the //sub// module works also on compressed requests | ||
- | |||
- | Now install nginx: | ||
- | <code bash> | ||
- | > emerge -v nginx | ||
- | </ | ||
- | |||
- | ==== NGINX pam_auth ==== | ||
- | |||
- | I think it's nice that with NGINX you can authenticate your users directly with your home server users. This means you don't need to add a second set of users, and that the users will only need one password, and no sync is required between HTTP users and server users. This is achieved using the **pam_auth** module on Linux. You have already built nginx with pam_auth support, but you need to configure it. | ||
- | |||
- | Create the file **/ | ||
- | < | ||
- | auth required pam_unix.so | ||
- | account required pam_unix.so | ||
- | </ | ||
- | |||
- | |||
- | ==== NGINX main configuration ==== | ||
- | |||
- | |||
- | |||
- | ==== Generate SSL certificates for HTTPS ==== | ||
- | |||
- | |||
- | |||
- | ---- | ||
- | Next to: [[sailing: | ||
- | |||
- | Prev to: [[sailing: |