configured the posts archetype, added search

This commit is contained in:
4HMZ4
2021-12-02 00:39:19 +00:00
parent fde00d8b40
commit d4cdc3c66c
9 changed files with 242 additions and 14 deletions
+20
View File
@@ -0,0 +1,20 @@
---
title: {{ replace .TranslationBaseName "-" " " | title }}
date: {{ .Date }}
author: "ahmza"
draft: true
weight:
tags: [""]
description: ""
canonicalURL: "{{ .Page | absURL }}"
cover:
image: "<image path/url>" # image path/url
alt: "<alt text>" # alt text
caption: "<text>" # display caption under cover
relative: false # when using page bundles set this to true
searchHidden: false
showtoc: true
searchHidden: true
---
+18 -12
View File
@@ -12,6 +12,12 @@ minify:
disableXML: true
minifyOutput: true
outputs:
home:
- HTML
- RSS
- JSON
params:
env: production # to enable google analytics, opengraph, twitter-cards and schema.
title: Blog
@@ -24,8 +30,8 @@ params:
disableThemeToggle: false
ShowReadingTime: true
ShowShareButtons: true
ShowPostNavLinks: true
#ShowShareButtons: true
#ShowPostNavLinks: true
ShowBreadCrumbs: true
ShowCodeCopyButtons: true
disableSpecial1stPost: false
@@ -33,7 +39,7 @@ params:
comments: false
hidemeta: false
hideSummary: false
showtoc: false
showtoc: true
tocopen: false
assets:
@@ -45,10 +51,10 @@ params:
apple_touch_icon: "<link / abs url>"
safari_pinned_tab: "<link / abs url>"
label:
text: "Blog"
icon: /apple-touch-icon.png
iconHeight: 35
#label:
#text: "Blog"
#icon: /apple-touch-icon.png
#iconHeight: 35
# profile-mode
profileMode:
@@ -81,10 +87,10 @@ params:
cover:
hidden: true # hide everywhere but not in structured data
hiddenInList: true # hide on list pages and home
hiddenInSingle: true # hide on single page
hiddenInSingle: false # hide on single page
editPost:
URL: "https://github.com/4hmz4/blog/content"
URL: "https://github.com/4hmz4/blog/blob/main/content"
Text: "Suggest Changes" # edit text
appendFilePath: true # to append file path to Edit link
@@ -108,9 +114,9 @@ menu:
name: tags
url: /tags/
weight: 20
- identifier: example
name: blog.ahmza.com
url: https://blog.ahmza.com
- identifier: search
name: search
url: /search/
weight: 30
# Read: https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs#using-hugos-syntax-highlighter-chroma
# pygmentsUseClasses: true
@@ -0,0 +1,182 @@
---
title: Setup an NGINX Reverse Proxy
date: 2021-12-01T22:59:00Z
author: "ahmza"
draft: false
tags: ["HomeLab", "Networking", "NGINX", "ReverseProxy"]
description: "Learn to setup a quick and easy reverse proxy using NGINX"
canonicalURL: "https://blog.ahmza.com/Page%28/posts/Setup-an-NGINX-Reverse-Proxy.md%29"
cover:
image: "/img/Reverse-Proxy/feature-anim.gif" # image path/url
alt: "abstracted reverse proxy diagram" # alt text
caption: "<text>" # display caption under cover
relative: false # when using page bundles set this to true
searchHidden: false
---
# **Introduction**
In this post we will go over setting up an *NGINX* reverse proxy to **allow different
web services to reach the outside world.** We will also cover setting up **auto
renewing SSL certificates.**
Why not just port forward the services, it does the same thing Right? Reverse
proxies are a great way to expose web services to the outside world in a more
secure and customisable manner. **Some of the features that a reverse proxy provides
are as follows:**
* **Host multiple services using the same HTTP/HTTPS ports**
* **Hides the origin server**
* **HTTPS TLS encryption**
* **Caching**
* **Compression**
# **Creating a Reverse Proxy**
## **Prerequisites**
* **a server to act as the reverse proxy**
* **a web server**
* **a registered domain name**
* **Have A records setup for the Domain name**
## **Install** ***NGINX***
I'll be using the apt package manager as I'm on Ubuntu server,
this may differ for you
Update packages, then **install** ***NGINX***
``` bash
sudo apt update
sudo apt install nginx
```
Now we want to **enable** ***NGINX*** so the program will start when the server boots
``` bash
sudo systemctl enable --now nginx
```
# **Firewall**
> **Quick Note:** now is a good time to port forward ports 80 and 443 from the router
> to the reverse proxy
Ubuntu server comes with a firewall (ufw), so be sure to allow access to *NGINX* and
enable it.
The reverse proxy handles both HTTP and HTTPS so **allow "Nginx Full"**
``` bash
sudo ufw allow 'Nginx full'
```
**If you are using SSH allow it through**
``` bash
sudo ufw allow 'OpenSSH'
```
# **Configure** ***NGINX***
**Unlink the default ***NGINX*** config**
``` bash
sudo unlink /etc/nginx/sites-enabled/default
```
## **Create ***NGINX*** Config**
Create a config file in **/etc/nginx/site-available**
> **Quick Note:** use whichever text editor you want, I'm using vim
``` bash
sudo vim /etc/nginx/sites-available/blog.conf
```
``` nginx
server {
listen 80;
server_name blog.example.com;
location / {
proxy_pass http://ip-of-server:port;
}
}
```
* **server_name** is the domain name you want use this can include sub-domains
* **proxy_pass is the IP address of the web server**
## **Enable ***NGINX*** Config**
To activate a config file we need to link the file from the **sites-available**
folder to **sites-enabled**.
> **Pro Tip:** make sure to use full paths when creating symlinks
``` bash
sudo ln -s /etc/nginx/sites-available/blog.conf /etc/nginx/sites-enabled/blog.conf
```
**Check the config**, this is an important step as it warns you of any errors before
reloading *NGINX*
``` bash
sudo nginx -t
```
If the output looks simmiler to below then you're good to go !!
``` bash
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```
Now **restart the ***NGINX*** service**
``` bash
sudo systemctl restart nginx
```
you should now have a working reverse proxy !!
# **Setting up SSL**
## **Prerequisites**
* Make sure HTTP and HTTPS are port forwarded to the reverse proxy
* Make sure **server_name** is set in the config file you created
## **Installing** ***Certbot***
*Certbot* is a tool that requests an SSL certificate and makes sure it is renewed
when needed.
**Install** ***Certbot*** as well as the **python ***NGINX*** plug-in**
``` bash
sudo apt install certbot python3-certbot-nginx
```
> **Quick Note:** double check firewall rules
## **Request SSL Certificate**
Now all we need to do is **request the certificate** !!
``` bash
sudo certbot --nginx -d blog.example.com
```
* **--nginx** specifies we are using NGINX, this will update the config file we created
to allow the use of SSL
* **-d** is the domain name you want to use
If this is the first time running *Certbot* you will be asked to enter an email as well
as agree to terms and services.
If the certificate request is successful you will be prompted with
``` bash
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
```
**If you want all traffic to be SSL encrypted choose option 2**
That's it we have SSL certificates installed. You will need a new certificate for each
different domain name or subdomain.
## **Verify Auto Renewal**
All we need to do now is make sure that Certbot can automatically renew certificates.
``` bash
sudo certbot renew --dry-run
```
If you see no errors then you are ready to go.
# **Conclusion**
By following this you have hopefully managed to setup an *NGINX* Reverse proxy to
handle incoming HTTP/HTTPS requests as well as configured automatically renewing
SSL certificates.
This posts barely scratches the surface of what *NGINX* can do, I would highly
recommend reading more into this great piece of software !!
My reverse proxy handling non existent traffic
![neo awakening](/img/gifs/i-know-kung-fu.gif)
Give it a few months and this blog will ...
![matrix flop](/img/gifs/matrix-jump-fail.gif)
+18 -2
View File
@@ -1,9 +1,25 @@
---
title: "Welcome"
title: Welcome
date: 2021-12-01T13:36:08Z
author: "ahmza"
draft: false
tags: ["welcome", "misc"]
canonicalURL: "https://blog.ahmza.com/Page%28/posts/Setup-an-NGINX-Reverse-Proxy.md%29"
#cover:
#image: "/img/Reverse-Proxy/feature-anim.gif" # image path/url
#alt: "abstracted reverse proxy diagram" # alt text
#caption: "<text>" # display caption under cover
#relative: false # when using page bundles set this to true
showtoc: false
searchHidden: true
---
### Hello World
The mandatory hello world when you start something new.
@@ -26,7 +42,7 @@ I feel If you are interested in something then definitely go ahead
and try to learn it I'm sure you will learn a lot more than you
expect. Like a lot of people say
Its about the Journey as much as it is the destination
> ***Its about the Journey as much as it is the destination***
I have always tinkered and naturally gained an interest for
technology, I don't limit myself to one part of tech I try to dabble
+4
View File
@@ -0,0 +1,4 @@
---
title: "Search" # in any language you want
layout: "search" # is necessary
---
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB