SlideShare a Scribd company logo
1 of 21
Download to read offline
CommandBox
Multi-Server
The only tool you’ll ever need
Brad Wood
@bdw429s
CommandBox Multi-Site
CommandBox Multi-Site
● Simple, standalone server
● Contains web server HTTP/SSL/AJP binding
● Unparalleled configurability & portability
● Only 1 webroot
● Only 1 set of rewrites
● Only 1 set of virtual directories
● Only 1 HTTP/SSL/AJP port
● Only 1 profile/lockdown config
● Only 1 set of welcome files
● Only 1 set of Mime Types
● Only 1 directory browsing flag
CommandBox Single Site Server (default)
CommandBox Multi-Site
ModCFML!!
● Simple, standalone server
● Contains web server HTTP/SSL/AJP binding
● Unparalleled configurability & portability
● Only 1 webroot Multiple webroots
● Only 1 set of rewrites
● Only 1 set of virtual directories
● Only 1 HTTP/SSL/AJP port
● Only 1 profile/lockdown config
● Only 1 set of welcome files
● Only 1 set of Mime Types
● Only 1 directory browsing flag
● Requires web server in front to define sites & pass HTTP headers
CommandBox Lucee Multi-Context
CommandBox Adobe CF Multi-Context
CommandBox Multi-Site
● Simple, standalone server
● Contains web server HTTP/SSL/AJP binding
● Unparalleled configurability & portability
● Multiple Webroots (sites)
● Virtual directories per site
● Multiple HTTP/SSL/AJP bindings per site
● Profile/lockdown config per site
● Welcome files per site
● Mime Types per site
● Directory browsing flag per site
● Supports Adobe CF & Lucee Server
● No additional web server needed!
CommandBox Multi-Site
● Huge refactoring of server launching
● Huge refactoring of Runwar code
● Addition of “sites” object to server.json
● Addition of “web.bindings” object to server.json
● New JSON file conventions for defining sites
● New tray icon menus
● Static files served from Undertow Resource
handler instead of default servlet
● Access log for each site
● Total isolation of settings for each site
● Default, server level settings that apply to all sites
● Host Header support for many sites on same IP:port
● Takes the place of your full web server AND servlet
● Part of CommandBox Pro license
CommandBox Multi-Site
● FREE for development and testing usage
● Fully(*) backwards compatible
● Default behavior is still just a single site
● Supports old HTTP/SSL/AJP port config
in addition to new “bindings” syntax
● Ready on the 6.0.0-alpha builds for you to test
(*) The notable exception being Tuckey
CommandBox Multi-Site
Server-wide Settings
● JRE/JDK the server runs on
● JVM args, heap size
● CF Engine/version
● Console log
● Tuckey Rewrites (part of servlet)
● Environment Variables
CommandBox Multi-Site
Per-site Settings
● GZIp enabled and GZip predicate
● Access log
● Use proxy forwarded IP
● CommandBox Server Rules (Undertow
Predicate Language)
○ SSL settings (HSTS, SSL Redirect)
○ Block CF Admin
○ Block flash remoting
○ Block sensitive paths
● Security
○ Basic auth
○ Client cert auth
○ Security predicate
● Custom error pages (404, 500, etc)
● Mime types
● Welcome files
● Allowed file extensions
● Directory browsing
● Aliases/Virtual dirs
● File cache settings
● Case sensitive paths
● Web root
● Server Profile
CommandBox Multi-Site
● By default, “server start” does the same thing it’s always done
● Trigger multi-site simply by defining a “sites” object
● Each “site” object can contain all the same properties as a server.json “web” object
● In multi-site mode, the “web” object holds default settings, applied to all sites unless they
override that setting
● “webroot” and “name” is really the only required settings for a site
● Bindings can be declared at server level if all sites want to be on port 80/443 for example
● New “hostAlias” setting for setting per-site host headers
● Bindings map incoming requests to sites in this order
○ Matches exact IP:port and host header
○ Matches *:port and host header
○ Matches exact IP:port and wildcard host header
○ Matches *:port
○ Is “default” site
CommandBox Multi-Site
{
"name":"multiverse",
"web":{
"bindings":{
"HTTP":{
"listen":"0.0.0.0:80"
}
}
},
"sites":{
"client-1":{
"hostAlias":"client1.com,www.client1.com",
"webroot":"/var/www/client1/"
},
"client-2":{
"hostAlias":"client2.com,www.client2.com",
"webroot":"/var/www/client2/"
}
}
}
CommandBox Multi-Site
● New .site.json convention
● If file exists in web root of site, it is automatically loaded and merged into that site’s
settings
● Similar to web.config (IIS) or .htaccess (Apache) conventions
● Each .site.json file contains the same JSON structure as the “site” object
● Allows main server.json file to contain shared settings and “point” to the web roots and
all site-specific settings are kept with that site
● CommandBox-dotenv module will load any .env file also in the site’s web root and those
env vars will ONLY be visible to that .site.json file
CommandBox Multi-Site
.site.json
{
"profile":"production",
"directoryBrowsing":false,
"hostAlias":"example.com,www.example.com",
"GZipEnable":false
}
CommandBox Multi-Site
{
"name":"multiverse",
"web":{
"bindings":{
"HTTP":{
"listen":"0.0.0.0:80"
}
}
},
"sites":{
"client-1":{
"siteConfigFile":"/var/www/client1-site.json"
},
"client-2":{
"siteConfigFile":"/var/www/client2-site.json”
}
}
}
CommandBox Multi-Site
{
"name":"multiverse",
"web":{
"bindings":{
"HTTP":{
"listen":"0.0.0.0:80"
}
}
},
"siteConfigFiles":"/var/www/sites-enabled/*.json"
}
CommandBox Multi-Site
● If no bindings are provided, CommandBox will still pick a random
port on localhost
● In multi-site mode, a random port will be assigned to each site
● You can still use the “simple “ old way of declaring a single
HTTP/SSL/AJP port at the “web” level or inside a specific
“sites.my-site”.
● When using the old way, the “host” param defines the IP address, or
a hostname that resolves to a local IP for backwards compatibility.
● A new hostAlias property can be defined at the site level and applies
to all bindings no matter how they are defined.
CommandBox Multi-Site
● New “bindings” object can be provided in the “web” or any “site”
object.
● Top level “http”, “ssl”, and “ajp” objects can contain a single binding
object or an array of binding objects
● Each binding object can contain
○ Listen - IP:port where IP can be * or 0.0.0.0 or omitted
○ IP (mutex with “listen”)
○ Port (mutex with “listen”)
○ Host - list or array of host header names to match. * or empty
means match any hostname
{
"web": {
"bindings": {
"http": [
{
"listen": "*:80",
"host": [
"www.mysite.com",
"dev.mysite.com"
]
},
{
"listen": "127.0.0.1:8080"
}
],
"SSL": {
"listen": "0.0.0.0:443",
"host": "www.mysite.com",
"certFile": "myCert.pfx",
"keyPass": "$ecret"
},
"AJP": {
"listen": "8009"
}
}
}
}

More Related Content

Similar to ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf

(ATS4-PLAT01) Core Architecture Changes in AEP 9.0 and their Impact on Admini...
(ATS4-PLAT01) Core Architecture Changes in AEP 9.0 and their Impact on Admini...(ATS4-PLAT01) Core Architecture Changes in AEP 9.0 and their Impact on Admini...
(ATS4-PLAT01) Core Architecture Changes in AEP 9.0 and their Impact on Admini...BIOVIA
 
Node.js to the rescue
Node.js to the rescueNode.js to the rescue
Node.js to the rescueMarko Heijnen
 
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...NGINX, Inc.
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefNathen Harvey
 
Nginx cheat sheet
Nginx cheat sheetNginx cheat sheet
Nginx cheat sheetLam Hoang
 
Nodejs and WebSockets
Nodejs and WebSocketsNodejs and WebSockets
Nodejs and WebSocketsGonzalo Ayuso
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.jsAdrien Guéret
 
Lua tech talk
Lua tech talkLua tech talk
Lua tech talkLocaweb
 
Writing & Using Web Services
Writing & Using Web ServicesWriting & Using Web Services
Writing & Using Web ServicesRajarshi Guha
 
ITB2019 NGINX Overview and Technical Aspects - Kevin Jones
ITB2019 NGINX Overview and Technical Aspects - Kevin JonesITB2019 NGINX Overview and Technical Aspects - Kevin Jones
ITB2019 NGINX Overview and Technical Aspects - Kevin JonesOrtus Solutions, Corp
 
JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"
JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"
JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"GeeksLab Odessa
 
Web Server Administration
Web Server AdministrationWeb Server Administration
Web Server Administrationwebhostingguy
 
Web Server Administration
Web Server AdministrationWeb Server Administration
Web Server Administrationwebhostingguy
 
Web Server Administration
Web Server AdministrationWeb Server Administration
Web Server Administrationwebhostingguy
 
Cloud Automation with Opscode Chef
Cloud Automation with Opscode ChefCloud Automation with Opscode Chef
Cloud Automation with Opscode ChefSri Ram
 
Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationGroovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationStuart (Pid) Williams
 
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019Viktor Todorov
 
Deploying WO on Windows
Deploying WO on WindowsDeploying WO on Windows
Deploying WO on WindowsWO Community
 

Similar to ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf (20)

Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to Chef
 
(ATS4-PLAT01) Core Architecture Changes in AEP 9.0 and their Impact on Admini...
(ATS4-PLAT01) Core Architecture Changes in AEP 9.0 and their Impact on Admini...(ATS4-PLAT01) Core Architecture Changes in AEP 9.0 and their Impact on Admini...
(ATS4-PLAT01) Core Architecture Changes in AEP 9.0 and their Impact on Admini...
 
Node.js to the rescue
Node.js to the rescueNode.js to the rescue
Node.js to the rescue
 
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
Nginx cheat sheet
Nginx cheat sheetNginx cheat sheet
Nginx cheat sheet
 
Nodejs and WebSockets
Nodejs and WebSocketsNodejs and WebSockets
Nodejs and WebSockets
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
Lua tech talk
Lua tech talkLua tech talk
Lua tech talk
 
Writing & Using Web Services
Writing & Using Web ServicesWriting & Using Web Services
Writing & Using Web Services
 
ITB2019 NGINX Overview and Technical Aspects - Kevin Jones
ITB2019 NGINX Overview and Technical Aspects - Kevin JonesITB2019 NGINX Overview and Technical Aspects - Kevin Jones
ITB2019 NGINX Overview and Technical Aspects - Kevin Jones
 
JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"
JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"
JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"
 
Web Server Administration
Web Server AdministrationWeb Server Administration
Web Server Administration
 
Web Server Administration
Web Server AdministrationWeb Server Administration
Web Server Administration
 
Web Server Administration
Web Server AdministrationWeb Server Administration
Web Server Administration
 
Cloud Automation with Opscode Chef
Cloud Automation with Opscode ChefCloud Automation with Opscode Chef
Cloud Automation with Opscode Chef
 
Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationGroovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentation
 
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
 
Deploying WO on Windows
Deploying WO on WindowsDeploying WO on Windows
Deploying WO on Windows
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 

More from Ortus Solutions, Corp

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Secure your Secrets and Settings in ColdFusion
Secure your Secrets and Settings in ColdFusionSecure your Secrets and Settings in ColdFusion
Secure your Secrets and Settings in ColdFusionOrtus Solutions, Corp
 
Daniel Garcia ContentBox: CFSummit 2023
Daniel Garcia ContentBox: CFSummit 2023Daniel Garcia ContentBox: CFSummit 2023
Daniel Garcia ContentBox: CFSummit 2023Ortus Solutions, Corp
 
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdfITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdfOrtus Solutions, Corp
 
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdfITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdfOrtus Solutions, Corp
 
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdfITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdfOrtus Solutions, Corp
 
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfOrtus Solutions, Corp
 
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdfITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdfOrtus Solutions, Corp
 
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdfITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdfOrtus Solutions, Corp
 
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdfITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdfOrtus Solutions, Corp
 
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdfITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdfOrtus Solutions, Corp
 
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdfITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdfOrtus Solutions, Corp
 
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdfITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdfOrtus Solutions, Corp
 
ITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdf
ITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdfITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdf
ITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdfOrtus Solutions, Corp
 
ITB2023 Developing for Performance - Denard Springle.pdf
ITB2023 Developing for Performance - Denard Springle.pdfITB2023 Developing for Performance - Denard Springle.pdf
ITB2023 Developing for Performance - Denard Springle.pdfOrtus Solutions, Corp
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfOrtus Solutions, Corp
 

More from Ortus Solutions, Corp (20)

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Ortus Government.pdf
Ortus Government.pdfOrtus Government.pdf
Ortus Government.pdf
 
Luis Majano The Battlefield ORM
Luis Majano The Battlefield ORMLuis Majano The Battlefield ORM
Luis Majano The Battlefield ORM
 
Brad Wood - CommandBox CLI
Brad Wood - CommandBox CLI Brad Wood - CommandBox CLI
Brad Wood - CommandBox CLI
 
Secure your Secrets and Settings in ColdFusion
Secure your Secrets and Settings in ColdFusionSecure your Secrets and Settings in ColdFusion
Secure your Secrets and Settings in ColdFusion
 
Daniel Garcia ContentBox: CFSummit 2023
Daniel Garcia ContentBox: CFSummit 2023Daniel Garcia ContentBox: CFSummit 2023
Daniel Garcia ContentBox: CFSummit 2023
 
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdfITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
 
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdfITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
 
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdfITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
 
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
 
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdfITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
 
ITB_2023_CBWire_v3_Grant_Copley.pdf
ITB_2023_CBWire_v3_Grant_Copley.pdfITB_2023_CBWire_v3_Grant_Copley.pdf
ITB_2023_CBWire_v3_Grant_Copley.pdf
 
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdfITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
 
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdfITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
 
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdfITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
 
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdfITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
 
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdfITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
 
ITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdf
ITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdfITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdf
ITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdf
 
ITB2023 Developing for Performance - Denard Springle.pdf
ITB2023 Developing for Performance - Denard Springle.pdfITB2023 Developing for Performance - Denard Springle.pdf
ITB2023 Developing for Performance - Denard Springle.pdf
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdf
 

Recently uploaded

ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 

Recently uploaded (20)

ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 

ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf

  • 1. CommandBox Multi-Server The only tool you’ll ever need Brad Wood @bdw429s
  • 3. CommandBox Multi-Site ● Simple, standalone server ● Contains web server HTTP/SSL/AJP binding ● Unparalleled configurability & portability ● Only 1 webroot ● Only 1 set of rewrites ● Only 1 set of virtual directories ● Only 1 HTTP/SSL/AJP port ● Only 1 profile/lockdown config ● Only 1 set of welcome files ● Only 1 set of Mime Types ● Only 1 directory browsing flag
  • 4. CommandBox Single Site Server (default)
  • 5. CommandBox Multi-Site ModCFML!! ● Simple, standalone server ● Contains web server HTTP/SSL/AJP binding ● Unparalleled configurability & portability ● Only 1 webroot Multiple webroots ● Only 1 set of rewrites ● Only 1 set of virtual directories ● Only 1 HTTP/SSL/AJP port ● Only 1 profile/lockdown config ● Only 1 set of welcome files ● Only 1 set of Mime Types ● Only 1 directory browsing flag ● Requires web server in front to define sites & pass HTTP headers
  • 7. CommandBox Adobe CF Multi-Context
  • 8. CommandBox Multi-Site ● Simple, standalone server ● Contains web server HTTP/SSL/AJP binding ● Unparalleled configurability & portability ● Multiple Webroots (sites) ● Virtual directories per site ● Multiple HTTP/SSL/AJP bindings per site ● Profile/lockdown config per site ● Welcome files per site ● Mime Types per site ● Directory browsing flag per site ● Supports Adobe CF & Lucee Server ● No additional web server needed!
  • 9. CommandBox Multi-Site ● Huge refactoring of server launching ● Huge refactoring of Runwar code ● Addition of “sites” object to server.json ● Addition of “web.bindings” object to server.json ● New JSON file conventions for defining sites ● New tray icon menus ● Static files served from Undertow Resource handler instead of default servlet ● Access log for each site ● Total isolation of settings for each site ● Default, server level settings that apply to all sites ● Host Header support for many sites on same IP:port ● Takes the place of your full web server AND servlet ● Part of CommandBox Pro license
  • 10. CommandBox Multi-Site ● FREE for development and testing usage ● Fully(*) backwards compatible ● Default behavior is still just a single site ● Supports old HTTP/SSL/AJP port config in addition to new “bindings” syntax ● Ready on the 6.0.0-alpha builds for you to test (*) The notable exception being Tuckey
  • 11. CommandBox Multi-Site Server-wide Settings ● JRE/JDK the server runs on ● JVM args, heap size ● CF Engine/version ● Console log ● Tuckey Rewrites (part of servlet) ● Environment Variables
  • 12. CommandBox Multi-Site Per-site Settings ● GZIp enabled and GZip predicate ● Access log ● Use proxy forwarded IP ● CommandBox Server Rules (Undertow Predicate Language) ○ SSL settings (HSTS, SSL Redirect) ○ Block CF Admin ○ Block flash remoting ○ Block sensitive paths ● Security ○ Basic auth ○ Client cert auth ○ Security predicate ● Custom error pages (404, 500, etc) ● Mime types ● Welcome files ● Allowed file extensions ● Directory browsing ● Aliases/Virtual dirs ● File cache settings ● Case sensitive paths ● Web root ● Server Profile
  • 13. CommandBox Multi-Site ● By default, “server start” does the same thing it’s always done ● Trigger multi-site simply by defining a “sites” object ● Each “site” object can contain all the same properties as a server.json “web” object ● In multi-site mode, the “web” object holds default settings, applied to all sites unless they override that setting ● “webroot” and “name” is really the only required settings for a site ● Bindings can be declared at server level if all sites want to be on port 80/443 for example ● New “hostAlias” setting for setting per-site host headers ● Bindings map incoming requests to sites in this order ○ Matches exact IP:port and host header ○ Matches *:port and host header ○ Matches exact IP:port and wildcard host header ○ Matches *:port ○ Is “default” site
  • 15. CommandBox Multi-Site ● New .site.json convention ● If file exists in web root of site, it is automatically loaded and merged into that site’s settings ● Similar to web.config (IIS) or .htaccess (Apache) conventions ● Each .site.json file contains the same JSON structure as the “site” object ● Allows main server.json file to contain shared settings and “point” to the web roots and all site-specific settings are kept with that site ● CommandBox-dotenv module will load any .env file also in the site’s web root and those env vars will ONLY be visible to that .site.json file
  • 19. CommandBox Multi-Site ● If no bindings are provided, CommandBox will still pick a random port on localhost ● In multi-site mode, a random port will be assigned to each site ● You can still use the “simple “ old way of declaring a single HTTP/SSL/AJP port at the “web” level or inside a specific “sites.my-site”. ● When using the old way, the “host” param defines the IP address, or a hostname that resolves to a local IP for backwards compatibility. ● A new hostAlias property can be defined at the site level and applies to all bindings no matter how they are defined.
  • 20. CommandBox Multi-Site ● New “bindings” object can be provided in the “web” or any “site” object. ● Top level “http”, “ssl”, and “ajp” objects can contain a single binding object or an array of binding objects ● Each binding object can contain ○ Listen - IP:port where IP can be * or 0.0.0.0 or omitted ○ IP (mutex with “listen”) ○ Port (mutex with “listen”) ○ Host - list or array of host header names to match. * or empty means match any hostname
  • 21. { "web": { "bindings": { "http": [ { "listen": "*:80", "host": [ "www.mysite.com", "dev.mysite.com" ] }, { "listen": "127.0.0.1:8080" } ], "SSL": { "listen": "0.0.0.0:443", "host": "www.mysite.com", "certFile": "myCert.pfx", "keyPass": "$ecret" }, "AJP": { "listen": "8009" } } } }