fix(uwsgi): Make sure uWSGI talks proper HTTP/1.1 (#499)
This patch brings back the HTTP/1.1 related settings for uWSGI to fix #486 as apparently Relay tries to talk to Sentry Web with keep alives where uWSGI terminates the connection unexpectedly. It also ports some configs for uWSGI and nginx from single-tenant.
This commit is contained in:
parent
c34484ddbf
commit
9f39e3cea1
@ -1,50 +1,73 @@
|
|||||||
user nginx;
|
user nginx;
|
||||||
worker_processes 1;
|
worker_processes 1;
|
||||||
|
|
||||||
error_log /var/log/nginx/error.log warn;
|
error_log /var/log/nginx/error.log warn;
|
||||||
pid /var/run/nginx.pid;
|
pid /var/run/nginx.pid;
|
||||||
|
|
||||||
|
|
||||||
events {
|
events {
|
||||||
worker_connections 1024;
|
worker_connections 1024;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
http {
|
http {
|
||||||
default_type application/octet-stream;
|
default_type application/octet-stream;
|
||||||
|
|
||||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||||
'$status $body_bytes_sent "$http_referer" '
|
'$status $body_bytes_sent "$http_referer" '
|
||||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||||
|
|
||||||
sendfile on;
|
sendfile on;
|
||||||
keepalive_timeout 65;
|
tcp_nopush on;
|
||||||
|
tcp_nodelay on;
|
||||||
|
reset_timedout_connection on;
|
||||||
|
|
||||||
upstream relay {
|
keepalive_timeout 75s;
|
||||||
server relay:3000;
|
|
||||||
}
|
|
||||||
|
|
||||||
upstream sentry {
|
gzip off;
|
||||||
server web:9000;
|
server_tokens off;
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
server_names_hash_bucket_size 64;
|
||||||
listen 80;
|
types_hash_max_size 2048;
|
||||||
# use the docker DNS server to resolve ips for relay and sentry containers
|
types_hash_bucket_size 64;
|
||||||
resolver 127.0.0.11 ipv6=off;
|
client_max_body_size 5m;
|
||||||
client_max_body_size 100M;
|
|
||||||
|
|
||||||
proxy_redirect off;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Host $host;
|
proxy_redirect off;
|
||||||
|
proxy_buffering off;
|
||||||
|
proxy_next_upstream error timeout invalid_header http_502 http_503 non_idempotent;
|
||||||
|
proxy_next_upstream_tries 2;
|
||||||
|
|
||||||
location /api/store/ {
|
# Remove the Connection header if the client sends it,
|
||||||
proxy_pass http://relay;
|
# it could be "close" to close a keepalive connection
|
||||||
}
|
proxy_set_header Connection '';
|
||||||
location ~ ^/api/[1-9]\d*/ {
|
proxy_set_header Host $host;
|
||||||
proxy_pass http://relay;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
}
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
location / {
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
proxy_pass http://sentry;
|
proxy_set_header X-Request-Id $request_id;
|
||||||
}
|
proxy_read_timeout 30s;
|
||||||
}
|
proxy_send_timeout 5s;
|
||||||
|
|
||||||
|
upstream relay {
|
||||||
|
server relay:3000;
|
||||||
|
}
|
||||||
|
|
||||||
|
upstream sentry {
|
||||||
|
server web:9000;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
|
||||||
|
location /api/store/ {
|
||||||
|
proxy_pass http://relay;
|
||||||
|
}
|
||||||
|
location ~ ^/api/[1-9]\d*/ {
|
||||||
|
proxy_pass http://relay;
|
||||||
|
}
|
||||||
|
location / {
|
||||||
|
proxy_pass http://sentry;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -155,8 +155,30 @@ SENTRY_DIGESTS = "sentry.digests.backends.redis.RedisBackend"
|
|||||||
SENTRY_WEB_HOST = "0.0.0.0"
|
SENTRY_WEB_HOST = "0.0.0.0"
|
||||||
SENTRY_WEB_PORT = 9000
|
SENTRY_WEB_PORT = 9000
|
||||||
SENTRY_WEB_OPTIONS = {
|
SENTRY_WEB_OPTIONS = {
|
||||||
|
# These ase for proper HTTP/1.1 support from uWSGI
|
||||||
|
# Without these it doesn't do keep-alives causing
|
||||||
|
# issues with Relay's direct requests.
|
||||||
|
"http-keepalive": True,
|
||||||
|
"http-chunked-input": True,
|
||||||
|
# the number of web workers
|
||||||
|
'workers': 3,
|
||||||
|
# Turn off memory reporting
|
||||||
"memory-report": False,
|
"memory-report": False,
|
||||||
# 'workers': 3, # the number of web workers
|
# Some stuff so uwsgi will cycle workers sensibly
|
||||||
|
'max-requests': 100000,
|
||||||
|
'max-requests-delta': 500,
|
||||||
|
'max-worker-lifetime': 86400,
|
||||||
|
# Duplicate options from sentry default just so we don't get
|
||||||
|
# bit by sentry changing a default value that we depend on.
|
||||||
|
'thunder-lock': True,
|
||||||
|
'log-x-forwarded-for': False,
|
||||||
|
'buffer-size': 32768,
|
||||||
|
'limit-post': 209715200,
|
||||||
|
'disable-logging': True,
|
||||||
|
'reload-on-rss': 600,
|
||||||
|
'ignore-sigpipe': True,
|
||||||
|
'ignore-write-errors': True,
|
||||||
|
'disable-write-exception': True,
|
||||||
}
|
}
|
||||||
|
|
||||||
###########
|
###########
|
||||||
|
Reference in New Issue
Block a user