diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerController.java
index 18fd6f3030f0ee6df671d8f58aa3522a66cc7c3f..5dcbfc7d33778bab38fe39fd397176b16878027c 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerController.java
@@ -28,7 +28,7 @@ import jakarta.inject.Inject;
     name = "Swagger",
     description = "Swagger OpenAPI YAML")
 @Hidden
-@Controller("/swagger")
+@Controller("${nshmp.context-path}/swagger")
 public class SwaggerController {
 
   @Inject
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java
index ae7cb13e77582ee9cb78da46c58325cedd516a6d..7c28592bc58df846d78957ee07be3bc96a79db24 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java
@@ -46,7 +46,7 @@ import jakarta.inject.Inject;
 @Tag(
     name = DisaggService.NAME,
     description = "USGS NSHM hazard disaggregation service")
-@Controller("/disagg")
+@Controller("${nshmp.context-path}/disagg")
 public class DisaggController {
 
   @Inject
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java
index 261b62b69b173fd23e98c07eaab8fc17050737c7..c630a102c5a4d647c0836f7e68b32b9423b5affe 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java
@@ -40,7 +40,7 @@ import jakarta.inject.Inject;
 @Tag(
     name = HazardService.NAME,
     description = "USGS NSHM hazard calculation service")
-@Controller("/hazard")
+@Controller("${nshmp.context-path}/hazard")
 public class HazardController {
 
   @Inject
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesController.java
index 5276a2afd111e695de7c1297fc7cd54c6d5dcd44..4a99368504119a016581bd5276d28872e3d0a100 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesController.java
@@ -36,7 +36,7 @@ import jakarta.inject.Inject;
 @Tag(
     name = FeaturesService.NAME,
     description = "USGS NSHM source model features service")
-@Controller("/features")
+@Controller("${nshmp.context-path}/features")
 public class FeaturesController {
 
   @Inject
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesController.java
index 2f941ff14789f3fe25383dea32c0bb8b150c654b..2fe956f3676d38ccebab5c7795321e0570efdcea 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesController.java
@@ -34,7 +34,7 @@ import jakarta.inject.Inject;
 @Tag(
     name = LogicTreesService.NAME,
     description = "USGS NSHM source model logic tree service")
-@Controller("/trees")
+@Controller("${nshmp.context-path}/trees")
 public class LogicTreesController {
 
   @Inject
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/MapController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/MapController.java
index dffe697935206db22071c661dbfaeb25e47d3657..003137975f6c2283c8e31477d3df6efee3ff85a0 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/MapController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/MapController.java
@@ -39,7 +39,7 @@ import jakarta.inject.Inject;
 @Tag(
     name = MapController.NAME,
     description = "NSHM map boundary")
-@Controller("/map")
+@Controller("${nshmp.context-path}/map")
 public class MapController {
   static final Logger LOG = LoggerFactory.getLogger(MapController.class);
   static final String NAME = "Map Boundary";
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/MfdsController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/MfdsController.java
index 3d87c87bb4dd583ed65f3528671a0d2511829333..fd8151fdbe17f17cdfe7601344ad6a7da64c0afd 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/MfdsController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/MfdsController.java
@@ -40,7 +40,7 @@ import jakarta.inject.Inject;
 @Tag(
     name = MfdsService.NAME,
     description = "USGS NSHM source model MFD service")
-@Controller("/mfds")
+@Controller("${nshmp.context-path}/mfds")
 public class MfdsController {
 
   @Inject
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/ProbabilityController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/ProbabilityController.java
index 33dbd1b172b7d58bbcaab09b6675a442fb536cd1..750f0f1f007ee617d4f0c0e26c01acbfa083449d 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/ProbabilityController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/ProbabilityController.java
@@ -34,7 +34,7 @@ import jakarta.inject.Inject;
 @Tag(
     name = RateService.NAME_PROBABILITY,
     description = "USGS NSHM earthquake probability calculation service")
-@Controller("/probability")
+@Controller("${nshmp.context-path}/probability")
 public class ProbabilityController {
 
   @Inject
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java
index 8dffb0c1fd894303271ee5ac796ea16a9c2ea78d..f0f12d36a95dd937c72bd76c1430067c0220c3ce 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java
@@ -34,7 +34,7 @@ import jakarta.inject.Inject;
 @Tag(
     name = RateService.NAME_RATE,
     description = "USGS NSHM earthquake rate calculation service")
-@Controller("/rate")
+@Controller("${nshmp.context-path}/rate")
 public class RateController {
 
   @Inject
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceController.java
index 2bd63ae10a410fcd0de8e2ee2bc7b482f935322a..0febc062b4b3d305d4ed325823629cf1e7969849 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceController.java
@@ -32,7 +32,7 @@ import jakarta.inject.Inject;
 @Tag(
     name = SourceService.NAME,
     description = "USGS NSHM source model metadata service")
-@Controller("/source")
+@Controller("${nshmp.context-path}/source")
 public class SourceController {
 
   // TODO consider renaming to /model
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/TestSitesController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/TestSitesController.java
index 45fa30f2fff3a988bf69c2a7f4a33afd00c44434..8a07388c536c58d64e8419d4679a797305e344aa 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/TestSitesController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/TestSitesController.java
@@ -39,7 +39,7 @@ import jakarta.inject.Inject;
 @Tag(
     name = TestSitesController.NAME,
     description = "NSHM test sites")
-@Controller("/sites")
+@Controller("${nshmp.context-path}/sites")
 public class TestSitesController {
   static final Logger LOG = LoggerFactory.getLogger(TestSitesController.class);
   static final String NAME = "Test Sites";