Skip to content

Commit

Permalink
Nginx example (#7207)
Browse files Browse the repository at this point in the history
* Add sample nginx config file

- Taken from 0.13.x branch

* Add alternative setup for nginx

* Add brief note in the docs
  • Loading branch information
SchrodingersGat authored May 13, 2024
1 parent b5a3e4a commit 6a9d833
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 2 deletions.
5 changes: 4 additions & 1 deletion contrib/container/Caddyfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
# Caddyfile for Inventree
# Example Caddyfile for Inventree
# The following environment variables may be used:
# - INVENTREE_SITE_URL: The upstream URL of the Inventree site (default: inventree.localhost)
# - INVENTREE_SERVER: The internal URL of the Inventree container (default: http://inventree-server:8000)
#
# Note that while this file is a good starting point, it may need to be modified to suit your specific requirements


(log_common) {
log {
Expand Down
14 changes: 14 additions & 0 deletions contrib/container/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,17 @@ services:
- ${INVENTREE_EXT_VOLUME}:/var/log:z
- ${INVENTREE_EXT_VOLUME}:/data:z
- ${INVENTREE_EXT_VOLUME}:/config:z

# alternative: run nginx as reverse proxy
# inventree-proxy:
# container_name: inventree-proxy
# image: nginx:stable
# restart: always
# depends_on:
# - inventree-server
# ports:
# - ${INVENTREE_WEB_PORT:-80}:80
# - 443:443
# volumes:
# - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro,z
# - ${INVENTREE_EXT_VOLUME}:/var/www:z
70 changes: 70 additions & 0 deletions contrib/container/nginx.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# An example configuration file for running InvenTree container behind an nginx proxy
# While suitable for a simple installation, this file will likely require some modification
# if you are running a more complex setup (e.g behind another proxy, or with HTTPS)

server {

# Listen for connection on (internal) port 80
# If you are exposing this server to the internet, you should use HTTPS!
# In which case, you should also set up a redirect from HTTP to HTTPS, and listen on port 443
# See the Nginx documentation for more details
listen 80;

real_ip_header proxy_protocol;

location / {

proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-By $server_addr:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header CLIENT_IP $remote_addr;

proxy_pass_request_headers on;

proxy_redirect off;

client_max_body_size 100M;

proxy_buffering off;
proxy_request_buffering off;

# Do not touch this unless you have a specific reason - this and the docker-compose need to match
proxy_pass http://inventree-server:8000;
}

# Redirect any requests for static files
location /static/ {
alias /var/www/static/;
autoindex on;

# Caching settings
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}

# Redirect any requests for media files
location /media/ {
alias /var/www/media/;

# Media files require user authentication
auth_request /auth;

# Content header to force download
add_header Content-disposition "attachment";
}

# Use the 'user' API endpoint for auth
location /auth {
internal;

proxy_pass http://inventree-server:8000/auth/;

proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}

}
5 changes: 4 additions & 1 deletion docs/docs/start/docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,12 +117,15 @@ Runs an InvenTree web server instance, powered by a Gunicorn web server.

Runs the InvenTree background worker process. This spins up a second instance of the *inventree* container, with a different entrypoint command.

#### File Server
#### Proxy Server

Caddy working as a reverse proxy, separating requests for static and media files, and directing everything else to Gunicorn.

This container uses the official [caddy image](https://hub.docker.com/_/caddy).

!!! info "Nginx Proxy"
An alternative is to run nginx as the reverse proxy. A sample configuration file is provided in the `./contrib/container/` source directory.

#### Redis Cache

Redis is used as cache storage for the InvenTree server. This provides a more performant caching system which can useful in larger installations.
Expand Down

0 comments on commit 6a9d833

Please sign in to comment.