diff --git a/README.md b/README.md
index 198c2927233d914554f57971c9a0559c301424ae..f78516c95d7beb83d31f3a82619f5750926fd430 100644
--- a/README.md
+++ b/README.md
@@ -12,13 +12,18 @@ A very simple container to redirect HTTP traffic to another server, based on `ng
 
 - `SERVER_REDIRECT` - server to redirect to, eg. `www.example.com`
 - `SERVER_NAME` - optionally define the server name to listen on eg. `~^www.(?<subdomain>.+).example.com`
-   useful for capturing variable to use in server_redirect. 
+   - useful for capturing variable to use in server_redirect. 
 - `SERVER_REDIRECT_PATH` - optionally define path to redirect all requests eg. `/landingpage`
-   if not set nginx var `$request_uri` is used
+   - if not set nginx var `$request_uri` is used
 - `SERVER_REDIRECT_SCHEME` - optionally define scheme to redirect to 
-   if not set nginx var `$scheme` is used
-- `SERVER_REDIRECT_CODE` - optionally define the http code to use for redirection
-   if not set nginx 301 - is used
+   - if not set nginx var `$scheme` is used
+- `SERVER_REDIRECT_CODE` - optionally define the http status code to use for redirection
+   - if not set or not in list of allowed codes 301 is used as default
+   - allowed Codes are: 301, 302, 303, 307, 308
+ - `SERVER_REDIRECT_POST_CODE` - optionally define the http code to use for POST redirection
+    - useful if client should not change the request method from POST to GET
+    - if not set or not in allowed Codes `SERVER_REDIRECT_CODE` is used
+    - so per default all requests will be redirected with the same status code
 
 See also `docker-compose.yml` file.
 
diff --git a/default.conf b/default.conf
index 6e0b0d6e253fbef06c24d74ef4c453f79feaed70..a02eed79a99f92cb1c403d860a113f545ed70a8a 100644
--- a/default.conf
+++ b/default.conf
@@ -2,6 +2,11 @@ server {
     listen       80;
     server_name  ${SERVER_NAME};
 
+    # cherry picked from https://github.com/schmunk42/docker-nginx-redirect/pull/8
+    if ($request_method = POST) {
+        return ${SERVER_REDIRECT_POST_CODE} ${SERVER_REDIRECT_SCHEME}://${SERVER_REDIRECT}${SERVER_REDIRECT_PATH};
+    }
+
     return ${SERVER_REDIRECT_CODE} ${SERVER_REDIRECT_SCHEME}://${SERVER_REDIRECT}${SERVER_REDIRECT_PATH};
 
     # redirect server error pages to the static page /50x.html
diff --git a/docker-compose.yml b/docker-compose.yml
index 7f5304b2f73c3c307c1b625f22cfcf528e09ac67..15e2b1720cd089d564ff25e6334a2b32017ebc2c 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -10,3 +10,9 @@ to:
     # optionally define schema to redirect all requests
     # if not set nginx var $scheme is used
     #- SERVER_REDIRECT_SCHEME=https
+    # optionally define the http code to use for redirection
+    # allowed Codes are: 301, 302, 303, 307, 308, default is 301
+    #- SERVER_REDIRECT_CODE=301
+    # optionally define the http code to redirect POST requests
+    # if not set or not in allowed Codes, SERVER_REDIRECT_CODE will be used
+    #- SERVER_REDIRECT_POST_CODE=
diff --git a/run.sh b/run.sh
index d06824bda1ab9c46a5e45e041e814152ea5e95f2..6391a7bf51f3d678335d86c6cb0a8c1b3f42771d 100644
--- a/run.sh
+++ b/run.sh
@@ -11,9 +11,11 @@ if [ ! -n "$SERVER_NAME" ] ; then
 fi
 
 # set redirect code from optional ENV var
-if [ "$SERVER_REDIRECT_CODE" != '302' ] ; then
-    SERVER_REDIRECT_CODE='301'
-fi
+# allowed Status Codes are: 301, 302, 303, 307, 308
+expr match "$SERVER_REDIRECT_CODE" '30[12378]$' > /dev/null || SERVER_REDIRECT_CODE='301'
+
+# set redirect code from optional ENV var for POST requests
+expr match "$SERVER_REDIRECT_POST_CODE" '30[12378]$' > /dev/null || SERVER_REDIRECT_POST_CODE=$SERVER_REDIRECT_CODE
 
 # set redirect path from optional ENV var
 if [ ! -n "$SERVER_REDIRECT_PATH" ] ; then
@@ -28,6 +30,7 @@ fi
 sed -i "s|\${SERVER_REDIRECT}|${SERVER_REDIRECT}|" /etc/nginx/conf.d/default.conf
 sed -i "s|\${SERVER_NAME}|${SERVER_NAME}|" /etc/nginx/conf.d/default.conf
 sed -i "s|\${SERVER_REDIRECT_CODE}|${SERVER_REDIRECT_CODE}|" /etc/nginx/conf.d/default.conf
+sed -i "s|\${SERVER_REDIRECT_POST_CODE}|${SERVER_REDIRECT_POST_CODE}|" /etc/nginx/conf.d/default.conf
 sed -i "s|\${SERVER_REDIRECT_PATH}|${SERVER_REDIRECT_PATH}|" /etc/nginx/conf.d/default.conf
 sed -i "s|\${SERVER_REDIRECT_SCHEME}|${SERVER_REDIRECT_SCHEME}|" /etc/nginx/conf.d/default.conf