diff --git a/.gitignore b/.gitignore
index a60260e..1b07dab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,8 @@
# Any private crt and keys #
############################
-*.crt
-*.key
+*-day.crt
+*-day.key
+nginx-repo.*
*~
\#*
diff --git a/labs/lab1/media/lab1_none-dataplane-key-delete1.png b/labs/lab1/media/lab1_none-dataplane-key-delete1.png
new file mode 100644
index 0000000..c9affe1
Binary files /dev/null and b/labs/lab1/media/lab1_none-dataplane-key-delete1.png differ
diff --git a/labs/lab1/media/lab1_none-dataplane-key-delete2.png b/labs/lab1/media/lab1_none-dataplane-key-delete2.png
new file mode 100644
index 0000000..304bd62
Binary files /dev/null and b/labs/lab1/media/lab1_none-dataplane-key-delete2.png differ
diff --git a/labs/lab1/media/lab1_none-dataplane-key-new.png b/labs/lab1/media/lab1_none-dataplane-key-new.png
new file mode 100644
index 0000000..09c8919
Binary files /dev/null and b/labs/lab1/media/lab1_none-dataplane-key-new.png differ
diff --git a/labs/lab1/media/lab1_none-dataplane-key-overview.png b/labs/lab1/media/lab1_none-dataplane-key-overview.png
new file mode 100644
index 0000000..fd02faa
Binary files /dev/null and b/labs/lab1/media/lab1_none-dataplane-key-overview.png differ
diff --git a/labs/lab1/media/lab1_none-dataplane-key-revoke-list.png b/labs/lab1/media/lab1_none-dataplane-key-revoke-list.png
new file mode 100644
index 0000000..828bf37
Binary files /dev/null and b/labs/lab1/media/lab1_none-dataplane-key-revoke-list.png differ
diff --git a/labs/lab1/media/lab1_none-dataplane-key-revoke1.png b/labs/lab1/media/lab1_none-dataplane-key-revoke1.png
new file mode 100644
index 0000000..e4b922b
Binary files /dev/null and b/labs/lab1/media/lab1_none-dataplane-key-revoke1.png differ
diff --git a/labs/lab1/media/lab1_none-dataplane-key-revoke2.png b/labs/lab1/media/lab1_none-dataplane-key-revoke2.png
new file mode 100644
index 0000000..c529ac0
Binary files /dev/null and b/labs/lab1/media/lab1_none-dataplane-key-revoke2.png differ
diff --git a/labs/lab1/media/lab1_none-dataplane-key-save.png b/labs/lab1/media/lab1_none-dataplane-key-save.png
new file mode 100644
index 0000000..8bf3d5c
Binary files /dev/null and b/labs/lab1/media/lab1_none-dataplane-key-save.png differ
diff --git a/labs/lab1/media/lab1_none-empty-overview-dashboard.png b/labs/lab1/media/lab1_none-empty-overview-dashboard.png
new file mode 100644
index 0000000..fc2315c
Binary files /dev/null and b/labs/lab1/media/lab1_none-empty-overview-dashboard.png differ
diff --git a/labs/lab1/media/lab1_none-overview-dashboard.png b/labs/lab1/media/lab1_none-overview-dashboard.png
new file mode 100644
index 0000000..2d66e04
Binary files /dev/null and b/labs/lab1/media/lab1_none-overview-dashboard.png differ
diff --git a/labs/lab1/media/lab1_none-service.png b/labs/lab1/media/lab1_none-service.png
new file mode 100644
index 0000000..8d41ca3
Binary files /dev/null and b/labs/lab1/media/lab1_none-service.png differ
diff --git a/labs/lab1/media/lab1_none-tile.png b/labs/lab1/media/lab1_none-tile.png
new file mode 100644
index 0000000..f7e9de3
Binary files /dev/null and b/labs/lab1/media/lab1_none-tile.png differ
diff --git a/labs/lab1/media/lab1_xc-login.png b/labs/lab1/media/lab1_xc-login.png
new file mode 100644
index 0000000..156cdf0
Binary files /dev/null and b/labs/lab1/media/lab1_xc-login.png differ
diff --git a/labs/lab1/media/nginx-agent-icon.png b/labs/lab1/media/nginx-agent-icon.png
new file mode 100644
index 0000000..1af3346
Binary files /dev/null and b/labs/lab1/media/nginx-agent-icon.png differ
diff --git a/labs/lab1/media/nginx-one-icon.png b/labs/lab1/media/nginx-one-icon.png
new file mode 100644
index 0000000..acca29f
Binary files /dev/null and b/labs/lab1/media/nginx-one-icon.png differ
diff --git a/labs/lab1/readme.md b/labs/lab1/readme.md
new file mode 100644
index 0000000..f3da673
--- /dev/null
+++ b/labs/lab1/readme.md
@@ -0,0 +1,132 @@
+# NGINX One Console Introduction & Access
+
+## Introduction
+
+In this lab, you will be logging into NGINX One Console and exploring various components within it. This lab requires that you have access to F5 Distributed Cloud to work with the One Console. As part of this lab, you will explore the NGINX One console product, as a quick Overview of what it is and how to access it.
+
+
+
+## Learning Objectives
+
+By the end of the lab you will be able to:
+
+- [Understand NGINX One Console product](#nginx-one-console-introduction)
+- [Access and navigate NGINX One Console](#access-and-navigate-nginx-one-console)
+- [Create and manage data plane keys that would be used to manage NGINX instances](#create-and-manage-data-plane-keys-that-would-be-used-to-manage-nginx-instances)
+
+## Prerequisites
+
+- You must have an F5 Distributed Cloud(XC) Account
+- You must have enabled NGINX One service on F5 Distributed Cloud(XC)
+- See `Lab0` for instructions on setting up your system for this Workshop
+- Familiarity with basic Linux concepts and commands
+- Familiarity with basic NGINX concepts and commands
+
+
+
+### NGINX One Console Introduction
+
+
+
+The F5 NGINX One Console is a service which is part of the F5 Distributed Cloud, gives all NGINX users access to a SaaS experience for managing NGINX instances. The console lets you monitor and control your NGINX fleet from one place. You can check configurations, track performance metrics, identify security vulnerabilities, manage SSL certificates, and more.
+
+The NGINX One Console is valuable because it simplifies the complexities of modern application delivery by integrating multiple functionalities into a single platform. This reduces the need for disparate tools, lowers operational overhead and costs, and ensures robust security for your applications. You will be able to accelerate application delivery and time-to-value like never before with SaaS capabilities.
+
+NGINX One Console offers the following key benefits:
+
+- **Centralized control:** Manage all your NGINX instances from a single console.
+- **Enhanced monitoring and risk detection:** Automatically detect critical vulnerabilities (CVEs), verify SSL certificate statuses, and identify security issues in NGINX configurations.
+- **Performance optimization:** Track your NGINX versions and receive recommendations for tuning your configurations for better performance.
+- **Graphical Metrics Display:** Access a dashboard that shows key metrics for your NGINX instances, including instance availability, version distribution, system health, and utilization trends.
+- **Real-time alerts:** Receive alerts about critical issues.
+
+### How it works
+
+
+
+The NGINX One Console requires `NGINX Agent`, an open source software module written by NGINX that connects and communicates with NGINX One. This NGINX Agent must be installed and running on every NGINX instance that you wish to manage with NGINX One. You will use the publicly available NGINX with Agent images from Docker Hub for your NGINX OSS containers. In addition, as part of your Docker Compose file, your NGINX Plus containers already have the required `NGINX Agent` installed for you. NGINX Agent can also be installed using regular Linux package managers like `apt` and `yum`. Refer to the References Section for links to the NGINX Agent installation guides.
+
+### Access and navigate NGINX One console
+
+1. Login into the F5 Distributed Cloud console using your account credentials. The login page can be found at: https://console.ves.volterra.io/login/start
+
+ 
+
+1. Once logged in, the "home" screen shows you various tiles which represent F5 Distributed Cloud console features. In this lab, we'll focus on the `NGINX One` console tile as highlighted in the below screenshot.
+
+ 
+
+1. Click on the `NGINX One` tile from the home screen. The NGINX One "welcome" screen will appear. Make sure the NGINX One Console status shows `green - Enabled` as highlighted in below screenshot. Click on `Visit Service`. If it is not enabled, you must request access from your F5 Distributed Cloud admin.
+
+ 
+
+1. By default, this will bring you to the NGINX One Console `Overview Dashboard` page. As no NGINX Instances are being managed by NGINX One you are seeing the blank dashboard as shown in below screenshot.
+
+ 
+
+ Once you add different NGINX Instance in the next section, this Dashboard would get populated by useful insights as depicted in below sample dashboard screenshot.
+
+ 
+
+
+
+### Create and manage data plane keys that would be used to manage NGINX instances
+
+1. Within the NGINX One Console, click on `Manage > Data Plane Keys`. This would show all the Data Plane keys that you currently have.
+
+ 
+
+1. Click on `Add Data Plane Key` to create a new Dataplane key. This should open an `Add Data Plane Key` window. Provide a name of your choice for the new key. By default, the expiration date is set for a year. You can modify the expiration data as per your preference or keep the defaults for this workshop. Click on `Generate` to create your new key.
+
+ 
+
+ Once the key is generated, copy the value of this key to the clipboard using the `Copy` icon on the right side. **NOTE:** This Dataplane Key is only shown here and NGINX One doesn't save this value. Save this value locally as you would be using it to register new NGINX Instances. You can Register as many NGINX Instances as you like with the same Dataplane Key. If you lose the value of the key then you need to generate a new one again.
+
+ 
+
+1. Once you have saved the key locally for future use, click the `Close` button to finish the Data plane key creation process.
+
+
+
+### (Optional Exercise): Revoke a data plane key
+
+1. To revoke the data plane key, search the key that you would like to revoke within the Data Plane Keys Page and then click on the key. This should open a new overlay window on the right side as shown in below screenshot. Click on `Revoke` button. In the next confirmation window, again click on `Revoke` button to disable the data plane key.
+
+ 
+ 
+
+### (Optional Exercise): Delete a data plane key
+
+1. Active keys cannot be directly deleted. The key must first be revoked and then can be deleted.
+
+1. You can delete a revoked data plane key by opening the Data Plane Keys Page and then navigating to the `Revoked Keys` tab. This view should list all the revoked keys.
+
+ 
+
+ To delete a particular revoked key, select the key and then click on `Delete Selected` button. In the next confirmation window, again click on `Delete` button to delete the data plane key.
+
+ 
+ 
+
+
+
+This ends lab1.
+
+
+
+## References:
+
+- [NGINX One Console](https://docs.nginx.com/nginx-one/)
+- [NGINX Agent](https://docs.nginx.com/nginx-agent/overview/)
+
+
+
+### Authors
+
+- Chris Akker - Solutions Architect - Community and Alliances @ F5, Inc.
+- Shouvik Dutta - Solutions Architect - Community and Alliances @ F5, Inc.
+- Adam Currier - Solutions Architect - Community and Alliances @ F5, Inc.
+
+-------------
+
+Navigate to ([Lab2](../lab2/readme.md) | [LabGuide](../readme.md))
diff --git a/labs/lab2/docker-compose.yml b/labs/lab2/docker-compose.yml
new file mode 100644
index 0000000..bbe3679
--- /dev/null
+++ b/labs/lab2/docker-compose.yml
@@ -0,0 +1,164 @@
+# NGINX Plus / OSS with NGINX Agent
+# NGINX webservers with ingress-demo pages
+# NGINX One Console Instance Registration
+# NGINX Basics, Dec 2024
+# Chris Akker, Shouvik Dutta, Adam Currier
+#
+services:
+ basics-plus1: # Alpine NGINX Plus Web / Load Balancer
+ environment:
+ NGINX_AGENT_SERVER_HOST: "agent.connect.nginx.com"
+ NGINX_AGENT_SERVER_GRPCPORT: "443"
+ NGINX_AGENT_TLS_ENABLE: "true"
+ NGINX_AGENT_SERVER_TOKEN: $TOKEN # Datakey Fron basics- One Console
+# NGINX_AGENT_INSTANCE_GROUP: basics-workshop-plus
+ hostname: basics-plus1
+ container_name: basics-plus1
+ image: private-registry.nginx.com/nginx-plus/agent:nginx-plus-r32-alpine-3.20-20240613 # CVE - From Nginx Private Registry
+ volumes: # Sync these folders to container
+ - ./nginx-plus/etc/nginx/nginx.conf:/etc/nginx/nginx.conf
+ - ./nginx-plus/etc/nginx/conf.d:/etc/nginx/conf.d
+ - ./nginx-plus/etc/nginx/includes:/etc/nginx/includes
+ - ./nginx-plus/usr/share/nginx/html:/usr/share/nginx/html
+ ports:
+ - 80:80 # Open for HTTP
+ - 443:443 # Open for HTTPS
+ - 9000:9000 # Open for stub status page
+ - 9113:9113 # Open for Prometheus Scraper page
+ restart: always
+ #
+ basics-plus2: # Alpine NGINX Plus Web / Load Balancer
+ environment:
+ NGINX_AGENT_SERVER_HOST: "agent.connect.nginx.com"
+ NGINX_AGENT_SERVER_GRPCPORT: "443"
+ NGINX_AGENT_TLS_ENABLE: "true"
+ NGINX_AGENT_SERVER_TOKEN: $TOKEN # Datakey Fron Nginx One Console
+# NGINX_AGENT_INSTANCE_GROUP: basics-workshop-plus
+ hostname: basics-plus2
+ container_name: basics-plus2
+ image: private-registry.nginx.com/nginx-plus/agent:nginx-plus-r31-alpine-3.19-20240522 # CVE - From Nginx Private Registry
+ volumes: # Sync these folders to container
+ - ./nginx-plus/etc/nginx/nginx.conf:/etc/nginx/nginx.conf
+ - ./nginx-plus/etc/nginx/conf.d:/etc/nginx/conf.d
+ - ./nginx-plus/etc/nginx/includes:/etc/nginx/includes
+ - ./nginx-plus/usr/share/nginx/html:/usr/share/nginx/html
+ ports:
+ - "80" # Open for HTTP
+ - "443" # Open for HTTPS
+ - "9000" # Open for API / Dashboard page
+ - "9113" # Open for Prometheus Scraper page
+ restart: always
+ #
+ basics-plus3: # RHEL UBI NGINX Plus Web / Load Balancer
+ environment:
+ NGINX_AGENT_SERVER_HOST: "agent.connect.nginx.com"
+ NGINX_AGENT_SERVER_GRPCPORT: "443"
+ NGINX_AGENT_TLS_ENABLE: "true"
+ NGINX_AGENT_SERVER_TOKEN: $TOKEN # Datakey Fron Nginx One Console
+# NGINX_AGENT_INSTANCE_GROUP: basics-workshop-plus
+ hostname: basics-plus3
+ container_name: basics-plus3
+ image: private-registry.nginx.com/nginx-plus/agent:nginx-plus-r31-ubi-9-20240522 # From Nginx Private Registry
+ volumes: # Sync these folders to container
+ - ./nginx-plus/etc/nginx/nginx.conf:/etc/nginx/nginx.conf
+ - ./nginx-plus/etc/nginx/conf.d:/etc/nginx/conf.d
+ - ./nginx-plus/etc/nginx/includes:/etc/nginx/includes
+ - ./nginx-plus/usr/share/nginx/html:/usr/share/nginx/html
+ ports:
+ - "80" # Open for HTTP
+ - "443" # Open for HTTPS
+ - "9000" # Open for API / Dashboard page
+ - "9113" # Open for Prometheus Scraper page
+ restart: always
+ #
+ basics-oss1: # Debian NGINX OSS Web / Load Balancer
+ environment:
+ NGINX_AGENT_SERVER_HOST: "agent.connect.nginx.com"
+ NGINX_AGENT_SERVER_GRPCPORT: "443"
+ NGINX_AGENT_TLS_ENABLE: "true"
+ NGINX_AGENT_SERVER_TOKEN: $TOKEN # Datakey Fron Nginx One Console
+ hostname: basics-oss1
+ container_name: basics-oss1
+ image: docker-registry.nginx.com/nginx/agent:mainline # From Docker Public Registry
+ volumes: # Sync these folders to container
+ - ./nginx-oss/etc/nginx/nginx.conf:/etc/nginx/nginx.conf
+ - ./nginx-oss/etc/nginx/conf.d:/etc/nginx/conf.d
+ - ./nginx-oss/etc/nginx/includes:/etc/nginx/includes
+ - ./nginx-oss/etc/ssl/nginx:/etc/ssl/nginx
+ - ./nginx-oss/usr/share/nginx/html:/usr/share/nginx/html
+ ports:
+ - "80" # Open for HTTP
+ - "443" # Open for HTTPS
+ - "9000" # Open for stub status page
+ - "9113" # Open for Prometheus Scraper page
+ restart: always
+ #
+ basics-oss2: # Alpine NGINX OSS Web / Load Balancer
+ environment:
+ NGINX_AGENT_SERVER_HOST: "agent.connect.nginx.com"
+ NGINX_AGENT_SERVER_GRPCPORT: "443"
+ NGINX_AGENT_TLS_ENABLE: "true"
+ NGINX_AGENT_SERVER_TOKEN: $TOKEN # Datakey Fron Nginx One Console
+ hostname: basics-oss2
+ container_name: basics-oss2
+ image: docker-registry.nginx.com/nginx/agent:alpine # From Docker Public Registry
+ volumes: # Sync these folders to container
+ - ./nginx-oss/etc/nginx/nginx.conf:/etc/nginx/nginx.conf
+ - ./nginx-oss/etc/nginx/conf.d:/etc/nginx/conf.d
+ - ./nginx-oss/etc/nginx/includes:/etc/nginx/includes
+ - ./nginx-oss/etc/ssl/nginx:/etc/ssl/nginx
+ - ./nginx-oss/usr/share/nginx/html:/usr/share/nginx/html
+ ports:
+ - "80" # Open for HTTP
+ - "443" # Open for HTTPS
+ - "9000" # Open for stub status page
+ - "9113" # Open for Prometheus Scraper page
+ restart: always
+ #
+ basics-oss3: # Older Alpine NGINX OSS Web / Load Balancer
+ environment:
+ NGINX_AGENT_SERVER_HOST: "agent.connect.nginx.com"
+ NGINX_AGENT_SERVER_GRPCPORT: "443"
+ NGINX_AGENT_TLS_ENABLE: "true"
+ NGINX_AGENT_SERVER_TOKEN: $TOKEN # Datakey Fron Nginx One Console
+ hostname: basics-oss3
+ container_name: basics-oss3
+ image: docker-registry.nginx.com/nginx/agent:1.26-alpine # From Docker Public Registry
+ volumes: # Sync these folders to container
+ - ./nginx-oss/etc/nginx/nginx.conf:/etc/nginx/nginx.conf
+ - ./nginx-oss/etc/nginx/conf.d:/etc/nginx/conf.d
+ - ./nginx-oss/etc/nginx/includes:/etc/nginx/includes
+ - ./nginx-oss/etc/ssl/nginx:/etc/ssl/nginx
+ - ./nginx-oss/usr/share/nginx/html:/usr/share/nginx/html
+ ports:
+ - "80" # Open for HTTP
+ - "443" # Open for HTTPS
+ - "9000" # Open for stub status page
+ - "9113" # Open for Prometheus Scraper page
+ restart: always
+ #
+ web1:
+ hostname: web1
+ container_name: web1
+ platform: linux/amd64
+ image: nginxinc/ingress-demo # Image from Docker Hub
+ ports:
+ - "80" # Open for HTTP
+ - "443" # Open for HTTPS
+ web2:
+ hostname: web2
+ container_name: web2
+ platform: linux/amd64
+ image: nginxinc/ingress-demo
+ ports:
+ - "80"
+ - "433"
+ web3:
+ hostname: web3
+ container_name: web3
+ platform: linux/amd64
+ image: nginxinc/ingress-demo
+ ports:
+ - "80"
+ - "443"
+
diff --git a/labs/lab2/generate_certs.sh b/labs/lab2/generate_certs.sh
new file mode 100644
index 0000000..301b896
--- /dev/null
+++ b/labs/lab2/generate_certs.sh
@@ -0,0 +1,4 @@
+echo "Generate 1-day cert."
+openssl req -x509 -nodes -days 1 -newkey rsa:2048 -keyout nginx-oss/etc/ssl/nginx/1-day.key -out nginx-oss/etc/ssl/nginx/1-day.crt -subj "/CN=NginxPlusBasics"
+echo "Generate 30-day cert."
+openssl req -x509 -nodes -days 30 -newkey rsa:2048 -keyout nginx-oss/etc/ssl/nginx/30-day.key -out nginx-oss/etc/ssl/nginx/30-day.crt -subj "/CN=NginxPlusBasics"
\ No newline at end of file
diff --git a/labs/lab2/media/docker-icon.png b/labs/lab2/media/docker-icon.png
new file mode 100644
index 0000000..02ee3f1
Binary files /dev/null and b/labs/lab2/media/docker-icon.png differ
diff --git a/labs/lab2/media/lab2_docker-pulling.png b/labs/lab2/media/lab2_docker-pulling.png
new file mode 100644
index 0000000..3e2166f
Binary files /dev/null and b/labs/lab2/media/lab2_docker-pulling.png differ
diff --git a/labs/lab2/media/lab2_none-instances.png b/labs/lab2/media/lab2_none-instances.png
new file mode 100644
index 0000000..66567bb
Binary files /dev/null and b/labs/lab2/media/lab2_none-instances.png differ
diff --git a/labs/lab2/media/nginx-icon.png b/labs/lab2/media/nginx-icon.png
new file mode 100644
index 0000000..5997bd0
Binary files /dev/null and b/labs/lab2/media/nginx-icon.png differ
diff --git a/labs/lab2/media/nginx-plus-icon.png b/labs/lab2/media/nginx-plus-icon.png
new file mode 100644
index 0000000..23eb5e5
Binary files /dev/null and b/labs/lab2/media/nginx-plus-icon.png differ
diff --git a/labs/lab2/nginx-oss/etc/nginx/conf.d/cafe.example.com.conf b/labs/lab2/nginx-oss/etc/nginx/conf.d/cafe.example.com.conf
new file mode 100644
index 0000000..3af7071
--- /dev/null
+++ b/labs/lab2/nginx-oss/etc/nginx/conf.d/cafe.example.com.conf
@@ -0,0 +1,27 @@
+# cafe.example.com HTTP
+server {
+ # Listening on port 80 on all IP addresses on this machine
+ listen 80;
+
+ server_name cafe.example.com;
+
+ # status_zone cafe-VirtualServer;
+
+ # Server specific logging
+ access_log /var/log/nginx/cafe.example.com.log main_ext;
+ error_log /var/log/nginx/cafe.example.com_error.log info;
+
+ location / {
+
+ proxy_buffering off;
+
+ # Including best-practice headers are bonus points
+ include includes/proxy_headers.conf;
+ include includes/keepalive.conf;
+
+ # status_zone /;
+
+ proxy_pass http://nginx_cafe;
+ }
+
+}
diff --git a/labs/lab2/nginx-oss/etc/nginx/conf.d/stub_status.conf b/labs/lab2/nginx-oss/etc/nginx/conf.d/stub_status.conf
new file mode 100644
index 0000000..8869acd
--- /dev/null
+++ b/labs/lab2/nginx-oss/etc/nginx/conf.d/stub_status.conf
@@ -0,0 +1,19 @@
+# ngx_http_stub_status_module (Available in NGINX OSS)
+# provides Basic Status information http://nginx.org/en/docs/http/ngx_http_stub_status_module.html
+
+server {
+ listen 9000 ssl; # Listener for Stub Status
+
+ ssl_certificate /etc/ssl/nginx/30-day.crt;
+ ssl_certificate_key /etc/ssl/nginx/30-day.key;
+
+ location /basic_status {
+ stub_status;
+ }
+
+ # Redirect requests for "/" to "/basic_status"
+ location / {
+ return 301 /basic_status;
+ }
+
+}
\ No newline at end of file
diff --git a/labs/lab2/nginx-oss/etc/nginx/conf.d/tls-cars.example.com.conf b/labs/lab2/nginx-oss/etc/nginx/conf.d/tls-cars.example.com.conf
new file mode 100644
index 0000000..89c78de
--- /dev/null
+++ b/labs/lab2/nginx-oss/etc/nginx/conf.d/tls-cars.example.com.conf
@@ -0,0 +1,54 @@
+# cars.example.com HTTP/HTTPS
+# NGINX Basics Workshop
+# Nov 2024, Chris Akker, Shouvik Dutta, Adam Currier
+#
+server {
+
+ listen 443 ssl; # Uncomment to change to port 443, add "ssl" parameter for terminating TLS on all IP addresses on this machine
+
+ server_name cars.example.com; # Set hostname to match in request
+
+# Update the following lines for NGINX cert and key directives and file locations
+
+ ssl_certificate /etc/ssl/nginx/cars.crt;
+ ssl_certificate_key /etc/ssl/nginx/cars.key;
+
+ ssl_protocols TLSv1.1 TLSv1.3;
+ ssl_ciphers HIGH:!aNULL:3DES;
+ ssl_prefer_server_ciphers on;
+
+ access_log /var/log/nginx/cars.example.com.log main;
+
+ error_log /var/log/nginx/cars.example.com_error.log info;
+
+ root /usr/share/nginx/html; # Set the root folder for the HTML and JPG files
+
+ location / {
+
+ default_type text/html;
+ return 200 "Let's go fast, you have reached cars.example.com, path $uri\n";
+ }
+
+ location /gtr {
+
+ try_files $uri $uri.html; # Look for filename that matches the URI requested
+ }
+
+ location /nsx {
+
+ try_files $uri $uri.html;
+ }
+
+ location /rcf {
+
+ try_files $uri $uri.html;
+ }
+
+ location /browse { # new URL path
+
+ alias /usr/share/nginx/html; # Browse this folder
+ index index.html; # Use this file, but if it does *not* exist
+ autoindex on; # Perform directory/file browsing
+ }
+
+}
diff --git a/labs/lab2/nginx-oss/etc/nginx/conf.d/upstreams.conf b/labs/lab2/nginx-oss/etc/nginx/conf.d/upstreams.conf
new file mode 100644
index 0000000..8570729
--- /dev/null
+++ b/labs/lab2/nginx-oss/etc/nginx/conf.d/upstreams.conf
@@ -0,0 +1,34 @@
+# NGINX Basics, Plus Proxy to three upstream NGINX containers
+# Nov 2024 - Chris Akker, Shouvik Dutta, Adam Currier
+# nginx_cafe servers
+#
+upstream nginx_cafe { # Upstream block, the name is "nginx_cafe"
+
+ # Uncomment the zone directive below to add metrics to the Dashboard
+ # zone nginx_cafe 256k;
+
+ # Load Balancing Algorithms supported by NGINX
+ # - Round Robin (Default if nothing specified)
+ # - Least Connections
+ # - IP Hash
+ # - Hash (Any generic Hash)
+
+ # Load Balancing Algorithms supported by NGINX Plus
+ # - Least Time Last Byte / Header
+ # - Random Two
+
+ # Uncomment for Least-Time Last-Byte algorithm
+ # least_time last_byte;
+
+ # From Docker-Compose:
+ server web1:80;
+ server web2:80;
+ server web3:80;
+
+ # Uncomment for Cookie persistence
+ # sticky cookie srv_id expires=1m domain=.example.com path=/;
+
+ # Uncomment for keepalive TCP connections to upstreams
+ keepalive 16;
+
+}
\ No newline at end of file
diff --git a/labs/lab2/nginx-oss/etc/nginx/includes/keepalive.conf b/labs/lab2/nginx-oss/etc/nginx/includes/keepalive.conf
new file mode 100644
index 0000000..a9fbcf4
--- /dev/null
+++ b/labs/lab2/nginx-oss/etc/nginx/includes/keepalive.conf
@@ -0,0 +1,9 @@
+# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
+proxy_http_version 1.1;
+
+# Remove the Connection header if the client sends it,
+# it could be "close" to close a keepalive connection
+proxy_set_header Connection "";
+
+# Host request header field, or the server name matching a request
+proxy_set_header Host $host;
\ No newline at end of file
diff --git a/labs/lab2/nginx-oss/etc/nginx/includes/log_formats/main_ext.conf b/labs/lab2/nginx-oss/etc/nginx/includes/log_formats/main_ext.conf
new file mode 100644
index 0000000..296ea7b
--- /dev/null
+++ b/labs/lab2/nginx-oss/etc/nginx/includes/log_formats/main_ext.conf
@@ -0,0 +1,20 @@
+# Extended Log Format
+# Nginx Basics
+log_format main_ext 'remote_addr="$remote_addr", '
+ '[time_local=$time_local], '
+ 'request="$request", '
+ 'status="$status", '
+ 'http_referer="$http_referer", '
+ 'body_bytes_sent="$body_bytes_sent", '
+ 'Host="$host", '
+ 'sn="$server_name", '
+ 'request_time=$request_time, '
+ 'http_user_agent="$http_user_agent", '
+ 'http_x_forwarded_for="$http_x_forwarded_for", '
+ 'request_length="$request_length", '
+ 'upstream_address="$upstream_addr", '
+ 'upstream_status="$upstream_status", '
+ 'upstream_connect_time="$upstream_connect_time", '
+ 'upstream_header_time="$upstream_header_time", '
+ 'upstream_response_time="$upstream_response_time", '
+ 'upstream_response_length="$upstream_response_length", ';
diff --git a/labs/lab2/nginx-oss/etc/nginx/includes/proxy_headers.conf b/labs/lab2/nginx-oss/etc/nginx/includes/proxy_headers.conf
new file mode 100644
index 0000000..23a83d1
--- /dev/null
+++ b/labs/lab2/nginx-oss/etc/nginx/includes/proxy_headers.conf
@@ -0,0 +1,12 @@
+## Set Headers to the proxied servers ##
+
+# client address in a binary form, value’s length is always 4 bytes for IPv4 addresses or 16 bytes for IPv6 addresses
+proxy_set_header X-Real-IP $remote_addr;
+
+# X-Forwarded-For client request header field with the $remote_addr variable appended to it,
+# separated by a comma. If the “X-Forwarded-For” field is not present in the client request header,
+# the $proxy_add_x_forwarded_for variable is equal to the $remote_addr variable.
+proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+
+# request scheme, “http” or “https”
+proxy_set_header X-Forwarded-Proto $scheme;
\ No newline at end of file
diff --git a/labs/lab2/nginx-oss/etc/nginx/nginx.conf b/labs/lab2/nginx-oss/etc/nginx/nginx.conf
new file mode 100644
index 0000000..a3b502b
--- /dev/null
+++ b/labs/lab2/nginx-oss/etc/nginx/nginx.conf
@@ -0,0 +1,33 @@
+user nginx;
+worker_processes 1;
+
+error_log /var/log/nginx/error.log info;
+pid /var/run/nginx.pid;
+
+events {
+ worker_connections 1024;
+}
+
+
+http {
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
+ '$status $body_bytes_sent "$http_referer" '
+ '"$http_user_agent" "$http_x_forwarded_for"';
+
+ include /etc/nginx/includes/log_formats/*.conf; # Custom Access logs formats found here
+
+ access_log /var/log/nginx/access.log main;
+
+ sendfile on;
+ #tcp_nopush on;
+
+ keepalive_timeout 65;
+
+ #gzip on;
+
+ include /etc/nginx/conf.d/*.conf;
+
+}
diff --git a/labs/lab2/nginx-oss/etc/ssl/nginx/cars.crt b/labs/lab2/nginx-oss/etc/ssl/nginx/cars.crt
new file mode 100644
index 0000000..4eb6334
--- /dev/null
+++ b/labs/lab2/nginx-oss/etc/ssl/nginx/cars.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDFTCCAf2gAwIBAgIUEQHIC+pN7UA+PwpufAGW4sFczqowDQYJKoZIhvcNAQEL
+BQAwGjEYMBYGA1UEAwwPTmdpbnhQbHVzQmFzaWNzMB4XDTI1MDEwMjIyMDY0OVoX
+DTI1MDEwMzIyMDY0OVowGjEYMBYGA1UEAwwPTmdpbnhQbHVzQmFzaWNzMIIBIjAN
+BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA17iXl8xC2AApcMaoPEu5w42U++ai
+ZPPtgEoDGE/tgNZmWwHsmfdkKbhvcFX8vLwI1OD+mKPW0RcB56x0I29KRk8HGwwX
+XXUuALmWuYVYNE71O2cBE/8JpgLlFgkbjYyFZekQeyb9QHeYxI47vCQqptBzQoCx
+Bs/zi4lh+wgRYyXmHdTQ60183Gvxs4ujIDWnOC4/PGLr/ZLjySyBDM4+rtoz5xia
+HZVBFA8HINTz4vjMkP1zrN4RsgSQQop8vuxlZsLlJCSWDMgkidu/uCvXxo+gHLMs
+nrvDloEJuU1zx2va4i0e8Zr/eV/zVRIghKx9g/mBFFPnEdu0x7B48EfTnwIDAQAB
+o1MwUTAdBgNVHQ4EFgQUDQzkk+0qMyn/nczCV7vJVlpFLnAwHwYDVR0jBBgwFoAU
+DQzkk+0qMyn/nczCV7vJVlpFLnAwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B
+AQsFAAOCAQEAWXBbXqEckARXPGQtasa5+uVqwokH4TJwbnQLfZsQV766OltS4Bv/
+MFDqmFxFLvsuM2jf1vodtJTq+cuUWtn1o+0MCDFWy3lTifk0wpQyg3xF6boHdBi4
+oGFKn7oPwWaTU8yjJzbvH6A5mfjO57YklAXlmZwWsEylsgR9D9jPTUkX82P+8Ad6
+UjWmFsopTwjit1rBAnBOL/oIGl2IFE5L4Vv8tcFsfpDGpCK/h9D3G25uQY36c0av
+Q10lfV2+1eTQz//In+Li8zgGZa+XHtCxFPCEdcFQeEF3VkefgN7aL8qxmPgmSrqd
+P13gMgo7HwFPoxvuUD3vN2DKIeqfa/H7Mg==
+-----END CERTIFICATE-----
diff --git a/labs/lab2/nginx-oss/etc/ssl/nginx/cars.key b/labs/lab2/nginx-oss/etc/ssl/nginx/cars.key
new file mode 100644
index 0000000..3777400
--- /dev/null
+++ b/labs/lab2/nginx-oss/etc/ssl/nginx/cars.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDXuJeXzELYAClw
+xqg8S7nDjZT75qJk8+2ASgMYT+2A1mZbAeyZ92QpuG9wVfy8vAjU4P6Yo9bRFwHn
+rHQjb0pGTwcbDBdddS4AuZa5hVg0TvU7ZwET/wmmAuUWCRuNjIVl6RB7Jv1Ad5jE
+jju8JCqm0HNCgLEGz/OLiWH7CBFjJeYd1NDrTXzca/Gzi6MgNac4Lj88Yuv9kuPJ
+LIEMzj6u2jPnGJodlUEUDwcg1PPi+MyQ/XOs3hGyBJBCiny+7GVmwuUkJJYMyCSJ
+27+4K9fGj6Acsyyeu8OWgQm5TXPHa9riLR7xmv95X/NVEiCErH2D+YEUU+cR27TH
+sHjwR9OfAgMBAAECggEAGspO8UgpyP+EJgBV5l8VK+cKaJpE8rqkdTk71yod+dEm
+lwjPJHPn2ZKRLGdRYvMLObzTgYtfY0ozL11ocvogREkOPdqrkCy8UNS7lkCsKprf
+s8fgB2a2AQr8/laVOGgKLRTbuh+mdfokW8y6OGxZa6wZlFm9InZy7ZJbO7zNw/03
+jkAnDAzcAD4T9AgbR0zCVrRxehR6wGR220VWG8kw6gXswBvGvQaVAnwmjlTrh3pp
+EhZGC+iZ2el05JfGw6MlM7g6NKBK18KgrGYkhvKiML7BsOJPJD0vMId1jiVsejJR
+9xaPoBEaeTOLVWFisBfO5EZtkSZPF7nHwZGHSqZvoQKBgQDttK94ItRS33Uv/HAk
+2W+WKGSagSJeqHG9Hi3DEVLPE355QsOxgx/3h5EXnqHRVnu+CXqMHqEhf9afUZsJ
+0iMYVShYYELauRhcL8+XSrg+jFXp7Tvokv4XVbkwUyFnY+fM+coQ1rvamd5+1deX
+x1x629e/QtOtnaqkuvr9Xn8ArwKBgQDoUsKa3Eq8rx0vzI6KV4F6WncShObiKqkV
+0TR79SaNawT0vEhdDOhHuO5BNaiOI3+mbx/CRwnVedIicoi99cDgZrQPncaisnkC
+KZVcQpNMoFM8+ZYGyeYDo86sBi05WQRI/vxGKrOIUcaSsdieBLpS3E2btcNGkaLY
+pilcnRW4EQKBgQC2rR4QaEvd6GbJ2ulgGE3eCurNpiIAtti56wBmIeEOzL9sdzen
+KssdUmzZxwo6s4jjUauBFWTlNrZ8t507XeekooUf7dJS/t5OsluJvF19jCHWZX+d
+y6FD05g/IBPSvf99EhYM/MlfRNKtjK9jsE1NCbhy/utoSHvEnwGWR9G4dwKBgQCa
+fbZ1frqgYJ67E39SVcB/WbtG8GQM0Cuim30YVTyu3BTunmpMnnG0iDC/4mvVIZwY
+VFs9OTo74IexapKuJ8d8Mi/ZFqVpud8oZfix4n/Le+3+ZUaz+vzfPMYJtQ3LzftA
+g3fFPU4n/6FaGbQf2KsCwQdG3Yce3Wf6Q/zLXpZ70QKBgEseUKnmYKvFjmyVdO94
+nesTUuu7DITx4M7I3ssdKz/9KdqjmnVQn3yiNEEHEvItvKEZvFMAKB7uJFmY/oGr
+5DvP29lsr45FDTz2UWElz/LhsOkSBzRYQpXDkuaCl+lz7YE76S6F45vAy7RSY8TU
++57833tZa5uHl5GKhytuhGyQ
+-----END PRIVATE KEY-----
diff --git a/labs/lab2/nginx-oss/usr/share/nginx/html/gtr.html b/labs/lab2/nginx-oss/usr/share/nginx/html/gtr.html
new file mode 100644
index 0000000..1b1bdfc
--- /dev/null
+++ b/labs/lab2/nginx-oss/usr/share/nginx/html/gtr.html
@@ -0,0 +1,22 @@
+
+
+
If you see this page, the nginx web server is successfully installed and +working.
+ +Thank you for using nginx.
+ + diff --git a/labs/lab2/nginx-oss/usr/share/nginx/html/gtr.jpg b/labs/lab2/nginx-oss/usr/share/nginx/html/gtr.jpg new file mode 100644 index 0000000..be39ffe Binary files /dev/null and b/labs/lab2/nginx-oss/usr/share/nginx/html/gtr.jpg differ diff --git a/labs/lab2/nginx-oss/usr/share/nginx/html/index.html b/labs/lab2/nginx-oss/usr/share/nginx/html/index.html new file mode 100644 index 0000000..5d2b304 --- /dev/null +++ b/labs/lab2/nginx-oss/usr/share/nginx/html/index.html @@ -0,0 +1,24 @@ + + + +If you see this page, the nginx web server is successfully installed and +working. Further configuration is required.
+ +For online documentation and support please refer to
+nginx.org.
+Commercial support is available at
+nginx.com.
Thank you for using nginx.
+ + diff --git a/labs/lab2/nginx-oss/usr/share/nginx/html/nsx.html b/labs/lab2/nginx-oss/usr/share/nginx/html/nsx.html new file mode 100644 index 0000000..fc1de05 --- /dev/null +++ b/labs/lab2/nginx-oss/usr/share/nginx/html/nsx.html @@ -0,0 +1,22 @@ + + + +If you see this page, the nginx web server is successfully installed and +working.
+ +Thank you for using nginx.
+ + diff --git a/labs/lab2/nginx-oss/usr/share/nginx/html/nsx.jpg b/labs/lab2/nginx-oss/usr/share/nginx/html/nsx.jpg new file mode 100644 index 0000000..f3c27f5 Binary files /dev/null and b/labs/lab2/nginx-oss/usr/share/nginx/html/nsx.jpg differ diff --git a/labs/lab2/nginx-oss/usr/share/nginx/html/rcf.html b/labs/lab2/nginx-oss/usr/share/nginx/html/rcf.html new file mode 100644 index 0000000..468ddae --- /dev/null +++ b/labs/lab2/nginx-oss/usr/share/nginx/html/rcf.html @@ -0,0 +1,22 @@ + + + +If you see this page, the nginx web server is successfully installed and +working.
+ +Thank you for using nginx.
+ + diff --git a/labs/lab2/nginx-oss/usr/share/nginx/html/rcf.jpg b/labs/lab2/nginx-oss/usr/share/nginx/html/rcf.jpg new file mode 100644 index 0000000..40faef6 Binary files /dev/null and b/labs/lab2/nginx-oss/usr/share/nginx/html/rcf.jpg differ diff --git a/labs/lab2/nginx-plus/etc/nginx/conf.d/cafe.example.com.conf b/labs/lab2/nginx-plus/etc/nginx/conf.d/cafe.example.com.conf new file mode 100644 index 0000000..a770dba --- /dev/null +++ b/labs/lab2/nginx-plus/etc/nginx/conf.d/cafe.example.com.conf @@ -0,0 +1,37 @@ +# cafe.example.com HTTP +server { + # Listening on port 80 on all IP addresses on this machine + listen 80; + + server_name cafe.example.com; + + status_zone cafe-VirtualServer; + + # Server specific logging + access_log /var/log/nginx/cafe.example.com.log main_ext; + error_log /var/log/nginx/cafe.example.com_error.log info; + + location / { + + # Including best-practice headers are bonus points + include includes/proxy_headers.conf; + include includes/keepalive.conf; + + status_zone /; + + proxy_pass http://nginx_cafe; + } + + # Active Healthchecks + location @health_check { + internal; # Requests by NGINX only + proxy_set_header Host cafe.example.com; + proxy_pass http://nginx_cafe; + health_check interval=5s fails=3 passes=2 uri=/ match=status_ok; + + # Health check logs are boring but errors are interesting + # access_log /var/log/nginx/health_check.log main; + access_log off; + error_log /var/log/nginx/error.log error; + } +} diff --git a/labs/lab2/nginx-plus/etc/nginx/conf.d/dashboard.conf b/labs/lab2/nginx-plus/etc/nginx/conf.d/dashboard.conf new file mode 100644 index 0000000..3b1ace3 --- /dev/null +++ b/labs/lab2/nginx-plus/etc/nginx/conf.d/dashboard.conf @@ -0,0 +1,24 @@ +# NGINX Plus Basics, Nov 2024 +# Chris Akker, Shouvik Dutta, Adam Currier +# dashboard.conf +# +server { + # Conventional port for the NGINX Plus API is 8080 + listen 9000; + access_log off; # reduce noise in access logs + + location /api/ { + # Enable in read-write mode + api write=on; + } + # Conventional location of the NGINX Plus dashboard + location = /dashboard.html { + root /usr/share/nginx/html; + } + + # Redirect requests for "/" to "/dashboard.html" + location / { + return 301 /dashboard.html; + } +} + \ No newline at end of file diff --git a/labs/lab2/nginx-plus/etc/nginx/conf.d/status_ok.conf b/labs/lab2/nginx-plus/etc/nginx/conf.d/status_ok.conf new file mode 100644 index 0000000..adc6bbe --- /dev/null +++ b/labs/lab2/nginx-plus/etc/nginx/conf.d/status_ok.conf @@ -0,0 +1,5 @@ +# Simple health check expecting http 200 and correct Content-Type +match status_ok { + status 200; + header Content-Type = "text/html; charset=utf-8"; # For the nginx-cafe html +} \ No newline at end of file diff --git a/labs/lab2/nginx-plus/etc/nginx/conf.d/upstreams.conf b/labs/lab2/nginx-plus/etc/nginx/conf.d/upstreams.conf new file mode 100644 index 0000000..9879cf6 --- /dev/null +++ b/labs/lab2/nginx-plus/etc/nginx/conf.d/upstreams.conf @@ -0,0 +1,34 @@ +# NGINX Basics, Plus Proxy to three upstream NGINX containers +# Nov 2024 - Chris Akker, Shouvik Dutta, Adam Currier +# nginx_cafe servers +# +upstream nginx_cafe { # Upstream block, the name is "nginx_cafe" + + # Uncomment the zone directive below to add metrics to the Dashboard + zone nginx_cafe 256k; + + # Load Balancing Algorithms supported by NGINX + # - Round Robin (Default if nothing specified) + # - Least Connections + # - IP Hash + # - Hash (Any generic Hash) + + # Load Balancing Algorithms supported by NGINX Plus + # - Least Time Last Byte / Header + # - Random Two + + # Uncomment for Least-Time Last-Byte algorithm + least_time last_byte; + + # From Docker-Compose: + server web1:80; + server web2:80; + server web3:80; + + # Uncomment for Cookie persistence + # sticky cookie srv_id expires=1m domain=.example.com path=/; + + # Uncomment for keepalive TCP connections to upstreams + keepalive 16; + +} \ No newline at end of file diff --git a/labs/lab2/nginx-plus/etc/nginx/includes/keepalive.conf b/labs/lab2/nginx-plus/etc/nginx/includes/keepalive.conf new file mode 100644 index 0000000..a9fbcf4 --- /dev/null +++ b/labs/lab2/nginx-plus/etc/nginx/includes/keepalive.conf @@ -0,0 +1,9 @@ +# Default is HTTP/1, keepalive is only enabled in HTTP/1.1 +proxy_http_version 1.1; + +# Remove the Connection header if the client sends it, +# it could be "close" to close a keepalive connection +proxy_set_header Connection ""; + +# Host request header field, or the server name matching a request +proxy_set_header Host $host; \ No newline at end of file diff --git a/labs/lab2/nginx-plus/etc/nginx/includes/log_formats/main_ext.conf b/labs/lab2/nginx-plus/etc/nginx/includes/log_formats/main_ext.conf new file mode 100644 index 0000000..296ea7b --- /dev/null +++ b/labs/lab2/nginx-plus/etc/nginx/includes/log_formats/main_ext.conf @@ -0,0 +1,20 @@ +# Extended Log Format +# Nginx Basics +log_format main_ext 'remote_addr="$remote_addr", ' + '[time_local=$time_local], ' + 'request="$request", ' + 'status="$status", ' + 'http_referer="$http_referer", ' + 'body_bytes_sent="$body_bytes_sent", ' + 'Host="$host", ' + 'sn="$server_name", ' + 'request_time=$request_time, ' + 'http_user_agent="$http_user_agent", ' + 'http_x_forwarded_for="$http_x_forwarded_for", ' + 'request_length="$request_length", ' + 'upstream_address="$upstream_addr", ' + 'upstream_status="$upstream_status", ' + 'upstream_connect_time="$upstream_connect_time", ' + 'upstream_header_time="$upstream_header_time", ' + 'upstream_response_time="$upstream_response_time", ' + 'upstream_response_length="$upstream_response_length", '; diff --git a/labs/lab2/nginx-plus/etc/nginx/includes/proxy_headers.conf b/labs/lab2/nginx-plus/etc/nginx/includes/proxy_headers.conf new file mode 100644 index 0000000..23a83d1 --- /dev/null +++ b/labs/lab2/nginx-plus/etc/nginx/includes/proxy_headers.conf @@ -0,0 +1,12 @@ +## Set Headers to the proxied servers ## + +# client address in a binary form, value’s length is always 4 bytes for IPv4 addresses or 16 bytes for IPv6 addresses +proxy_set_header X-Real-IP $remote_addr; + +# X-Forwarded-For client request header field with the $remote_addr variable appended to it, +# separated by a comma. If the “X-Forwarded-For” field is not present in the client request header, +# the $proxy_add_x_forwarded_for variable is equal to the $remote_addr variable. +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + +# request scheme, “http” or “https” +proxy_set_header X-Forwarded-Proto $scheme; \ No newline at end of file diff --git a/labs/lab2/nginx-plus/etc/nginx/nginx.conf b/labs/lab2/nginx-plus/etc/nginx/nginx.conf new file mode 100644 index 0000000..be988da --- /dev/null +++ b/labs/lab2/nginx-plus/etc/nginx/nginx.conf @@ -0,0 +1,33 @@ +user nginx; +worker_processes 1; + +error_log /var/log/nginx/error.log info; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; +} + + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + include /etc/nginx/includes/log_formats/*.conf; # Custom Access logs formats found here + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout 65; + + #gzip on; + + include /etc/nginx/conf.d/*.conf; + +} diff --git a/labs/lab2/nginx-plus/usr/share/nginx/html/dashboard.html b/labs/lab2/nginx-plus/usr/share/nginx/html/dashboard.html new file mode 100644 index 0000000..5f1d00b --- /dev/null +++ b/labs/lab2/nginx-plus/usr/share/nginx/html/dashboard.html @@ -0,0 +1,1929 @@ +If you see this page, the nginx web server is successfully installed and +working.
+ +Thank you for using nginx.
+ + diff --git a/labs/lab2/nginx-plus/usr/share/nginx/html/gtr.jpg b/labs/lab2/nginx-plus/usr/share/nginx/html/gtr.jpg new file mode 100644 index 0000000..be39ffe Binary files /dev/null and b/labs/lab2/nginx-plus/usr/share/nginx/html/gtr.jpg differ diff --git a/labs/lab2/nginx-plus/usr/share/nginx/html/index.html b/labs/lab2/nginx-plus/usr/share/nginx/html/index.html new file mode 100644 index 0000000..5d2b304 --- /dev/null +++ b/labs/lab2/nginx-plus/usr/share/nginx/html/index.html @@ -0,0 +1,24 @@ + + + +If you see this page, the nginx web server is successfully installed and +working. Further configuration is required.
+ +For online documentation and support please refer to
+nginx.org.
+Commercial support is available at
+nginx.com.
Thank you for using nginx.
+ + diff --git a/labs/lab2/nginx-plus/usr/share/nginx/html/nsx.html b/labs/lab2/nginx-plus/usr/share/nginx/html/nsx.html new file mode 100644 index 0000000..fc1de05 --- /dev/null +++ b/labs/lab2/nginx-plus/usr/share/nginx/html/nsx.html @@ -0,0 +1,22 @@ + + + +If you see this page, the nginx web server is successfully installed and +working.
+ +Thank you for using nginx.
+ + diff --git a/labs/lab2/nginx-plus/usr/share/nginx/html/nsx.jpg b/labs/lab2/nginx-plus/usr/share/nginx/html/nsx.jpg new file mode 100644 index 0000000..f3c27f5 Binary files /dev/null and b/labs/lab2/nginx-plus/usr/share/nginx/html/nsx.jpg differ diff --git a/labs/lab2/nginx-plus/usr/share/nginx/html/rcf.html b/labs/lab2/nginx-plus/usr/share/nginx/html/rcf.html new file mode 100644 index 0000000..468ddae --- /dev/null +++ b/labs/lab2/nginx-plus/usr/share/nginx/html/rcf.html @@ -0,0 +1,22 @@ + + + +If you see this page, the nginx web server is successfully installed and +working.
+ +Thank you for using nginx.
+ + diff --git a/labs/lab2/nginx-plus/usr/share/nginx/html/rcf.jpg b/labs/lab2/nginx-plus/usr/share/nginx/html/rcf.jpg new file mode 100644 index 0000000..40faef6 Binary files /dev/null and b/labs/lab2/nginx-plus/usr/share/nginx/html/rcf.jpg differ diff --git a/labs/lab2/readme.md b/labs/lab2/readme.md new file mode 100644 index 0000000..1f0f843 --- /dev/null +++ b/labs/lab2/readme.md @@ -0,0 +1,170 @@ +# Build workshop components within Docker + +## Introduction + +In this lab, you will be running the backend application and several NGINX OSS and Plus instances as Docker containers. All the NGINX containers would be attached to NGINX One console as part of this exercise. + +