Finish a working example.

This commit is contained in:
Hyperling 2023-07-05 20:02:50 -07:00
parent 6ce636f1d1
commit 67a1f3cd0c
3 changed files with 33 additions and 16 deletions

View File

@ -1,10 +1,16 @@
# 2022-10-05 Hyperling # 2022-10-05 Hyperling
# Move config to nginx container. # Create the nginx environment for a reverse proxy.
# This is because nginx image does not play well with Volumes. # https://docs.docker.com/engine/reference/builder/
# Nextcloud and MariaDB created files in their folders fine, but nginx stays empty.
FROM nginx FROM nginx
# Add all the configuration files to the environment.
COPY ./config/nginx.conf /etc/nginx/nginx.conf COPY ./config/nginx.conf /etc/nginx/nginx.conf
COPY ./config/conf.d/* /etc/nginx/conf.d/ COPY ./config/conf.d/* /etc/nginx/conf.d/
# Create "working" certificates for the example configuration file.
RUN mkdir -p /etc/nginx/certs/example.com
RUN openssl req -new -x509 -days 5000 -nodes \
-out /etc/nginx/certs/example.com/cert.crt \
-keyout /etc/nginx/certs/example.com/cert.key \
-subj '/CN=example.com/O=Example/C=XX'

View File

@ -2,11 +2,24 @@
# A dummy test file since true scripts are being kept private. # A dummy test file since true scripts are being kept private.
# This should help anyone understand how the project is being used. # This should help anyone understand how the project is being used.
## Instructions ##
# Add this without the comment to your /etc/hosts to test that it is working,
# YOUR_DOCKER_SERVER_IP example.com
# If testing locally on a workstation,
# 127.0.0.1 example.com
# Then to test, first start the container,
# cd $DOCKER_HOME/Config/ReverseProxy && docker compose build && docker compose up -d
# Then from the system with the modified /etc/hosts,
# curl --insecure example.com
# You should a blip in the log of the container as well as the contents of the
# proxied website in the terminal, NOT example.com. If using a browser then you
# should notice that the URL is still example.com but the website is correct.
# Force HTTPS # Force HTTPS
server { server {
listen 80; listen 80;
server_name example.hyperling.com; server_name example.com;
# Redirect to a more secure protocol. # Redirect to a more secure protocol.
return 301 https://$host$request_uri; return 301 https://$host$request_uri;
@ -16,13 +29,12 @@ server {
# Serve Resource # Serve Resource
server { server {
listen 443 ssl http2; listen 443 ssl;
server_name example.hyperling.com; server_name example.com;
# These are only necessary if you are redirecting somewhere internal. If you # The certs being used for the website.
# paxx the user to a ssl_certificate /etc/nginx/certs/example.com/cert.crt;
ssl_certificate /usr/local/etc/letsencrypt/live/example.hyperling.com/fullchain.pem; ssl_certificate_key /etc/nginx/certs/example.com/cert.key;
ssl_certificate_key /usr/local/etc/letsencrypt/live/example.hyperling.com/privkey.pem;
# Send traffic to upstream server # Send traffic to upstream server
location / { location / {
@ -42,8 +54,8 @@ server {
# Or alternatively, do it like the force of HTTPS: # Or alternatively, do it like the force of HTTPS:
#return 301 https://website.name/URI; #return 301 https://website.name/URI;
# So this should forward you from 'example.hyperling.com' to a real site: # This should forward you from 'example.com' to a real site:
proxy_pass https://cahlen.org; proxy_pass https://hyperling.com;
} }
} }

View File

@ -4,13 +4,12 @@
# https://phoenixnap.com/kb/docker-nginx-reverse-proxy # https://phoenixnap.com/kb/docker-nginx-reverse-proxy
# https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/ # https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/
version: '2' version: '3'
services: services:
app: app:
image: nginx build: .
restart: always restart: always
build: ./
ports: ports:
- 80:80 - 80:80
- 443:443 - 443:443