Jump to content
Read the Funtoo Newsletter: Summer 2023 ×
  • entry
  • comments
  • views

Setting up a Web Server (Nginx)



When I got a Funtoo container, the first thing I wanted to do with it, was host a website. I'm new at this, so I looked up numerous tutorials, but none of them were specific to Funtoo, so I thought I'd write my own, for future reference and for the benefit of other new Funtoo users. It's a pretty basic setup, but I welcome any suggestions as to how it can be expanded or improved. Here are all the steps that I have gone through in setting up my web server.


First, install nginx by typing:


# emerge nginx


The configuration file for Nginx is located at "/etc/nginx/nginx.conf". I found that the default configuration in Funtoo worked just fine, so I moved straight on to configuring the server. If you have your own domain name, you can configure your DNS to point that address at your Funtoo container, but the Funtoo container has a default address of "(name).host.funtoo.org", so that is the address that I will use for the rest of this tutorial. You can set up a server for that address by typing:


# nano /etc/nginx/sites-enabled/(name).host.funtoo.org


And adding this to the file:

>server {        listen 80;        server_name (name).host.funtoo.org;        root /var/www/(name).host.funtoo.org/;        location / {                index index.html index.htm;        }}

Then create the server root directory:


# mkdir /var/www/(name).host.funtoo.org


And add a simple test page:


# nano /var/www/(name).host.funtoo.org/index.html


Start the nginx service by typing:


# /etc/init.d/nginx start


Now the index page should be accessible from any web browser by typing "(name).host.funtoo.org" into the address bar. That's all it takes to host web sites on a Funtoo container, but I want my websites accessible through https, rather than http, I need certificates to verify my site's identity. You can get a free certificate from LetsEncrypt using a program called Certbot.


Install certbot by typing:


# emerge certbot


And use it by typing:


# certbot certonly --webroot -w /var/www/(name).host.funtoo.org -d (name).host.funtoo.org


Now there should be certificates for the website located at /etc/letsencrypt/live/(name).host.funtoo.org/

Next, to reconfigure the server to redirect visitors to ssl, type:


# nano /etc/nginx/sites-enabled/(name).host.funtoo.org


And change the file's contents to this:

>server {        listen 80;        server_name (name).host.funtoo.org;        return 301 https://$host$request_uri;}server {        listen 443 ssl;        server_name (name).host.funtoo.org;        root /var/www/(name).host.funtoo.org/;        ssl_certificate /etc/letsencrypt/live/(name).host.funtoo.org/fullchain.pem;        ssl_certificate_key /etc/letsencrypt/live/(name).host.funtoo.org/privkey.pem;        location / {                index index.html index.htm;        }}

Restart Nginx by typing:


# /etc/init.d/nginx restart


And the web site can now be accessed securely through ssl.


One thing that I found, was that when I have multiple domain names pointing at my server, if I don't have entries set up for them in Nginx, it has the default behavior of redirecting requests for unspecified domain names to the first available server. I'd rather not have this happen, so I edited the Nginx configuration file:


# nano /etc/nginx/nginx.conf


And just above the line that says "include /etc/nginx/sites-enabled/*;" I added this:

>server {        server_name _;        listen *:80 default_server deferred;        return 444;}

This makes it so that all defaulted requests return no response.


That's all that I've done to set up my web server so far. If you're a beginner like me, I hope you find it helpful, and if you're more advanced than me, any advice you can offer will be greatly appreciated


If anybody has any questions or suggestions, write a comment or send me a message. All requests for clarification, correction, expansion, and improvement are welcome, and I'll edit and add to this tutorial as necessary.


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...