
Ich habe also versucht, Swagger so einzurichten, dass es auf /swagger/ funktioniert. Es hat gut funktioniert, bis wir zu einer Domäne gewechselt sind. Ich habe nicht so viel Erfahrung mit Nginx und seinem Reverse-Proxy. Ich werde meine Einstellungen teilen, falls jemand helfen kann. Die Seite wird tatsächlich geöffnet, aber sie ist ganz weiß, dasselbe gilt für /redoc/ (Redis).
Nginx.conf
events {
worker_connections 768;
multi_accept on;
}
http {
large_client_header_buffers 16 5120k;
fastcgi_read_timeout 900;
proxy_read_timeout 900;
proxy_connect_timeout 900;
proxy_send_timeout 900;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_intercept_errors on;
server {
client_max_body_size 250M;
listen 80;
server_name mysite.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
client_max_body_size 250M;
listen 443 ssl;
server_name mysite.com;
ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://mysite:3000/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_intercept_errors on;
}
location /ht/ {
proxy_pass http://mysite:8000/ht/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_intercept_errors on;
}
location /swagger/ {
proxy_pass http://mysite:8000/swagger/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_intercept_errors on;
}
Beispielsweise funktioniert /ht/ (Health Check) einwandfrei
urls.py im Backend:
urlpatterns = [
url(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-
swagger-ui')]
Bitte sagen Sie mir, wenn Sie weitere Dateien benötigen. Ich bin bereit, sie weiterzugeben. Ich ersetze lediglich vertrauliche Daten durch Dummy-Daten wie mysite.com.
Dank im Voraus!
Bearbeiten: Mir ist gerade aufgefallen, dass auf der Registerkarte „Netzwerk“ für alle CSS- und JS-Dateien angezeigt wird, dass „Javascript aktiviert sein muss, um diese App auszuführen“. Dasselbe gilt für /redoc, und außerdem gibt das Konsolenprotokoll für die JS-Dateien Folgendes aus: „Nicht abgefangener Syntaxfehler: Unerwartetes Token ‚<‘“.
Ich habe vergessen zu erwähnen, dass es sich um eine React-App handelt, aber die App selbst funktioniert einwandfrei. Das Backend ist in Python/Django. Ich habe also versucht, Swagger so einzurichten, dass es auf /swagger/ funktioniert. Es hat einwandfrei funktioniert, bis wir zu einer Domäne gewechselt sind. Ich habe nicht so viel Erfahrung mit nginx und seinem Reverse-Proxy. Ich werde meine Einstellungen teilen, falls jemand helfen kann. Es öffnet tatsächlich die Seite, aber sie ist ganz weiß, dasselbe gilt für /redoc/ (Redis).
Nginx.conf
events {
worker_connections 768;
multi_accept on;
}
http {
large_client_header_buffers 16 5120k;
fastcgi_read_timeout 900;
proxy_read_timeout 900;
proxy_connect_timeout 900;
proxy_send_timeout 900;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_intercept_errors on;
server {
client_max_body_size 250M;
listen 80;
server_name mysite.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
client_max_body_size 250M;
listen 443 ssl;
server_name mysite.com;
ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://mysite:3000/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_intercept_errors on;
}
location /ht/ {
proxy_pass http://mysite:8000/ht/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_intercept_errors on;
}
location /swagger/ {
proxy_pass http://mysite:8000/swagger/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_intercept_errors on;
}
Beispielsweise funktioniert /ht/ (Health Check) einwandfrei
urls.py im Backend:
urlpatterns = [
url(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-
swagger-ui')]
Bitte sagen Sie mir, wenn Sie weitere Dateien benötigen. Ich bin bereit, sie weiterzugeben. Ich ersetze lediglich vertrauliche Daten durch Dummy-Daten wie mysite.com.
Dank im Voraus!
Bearbeiten: Mir ist gerade aufgefallen, dass auf der Registerkarte „Netzwerk“ für alle CSS- und JS-Dateien angezeigt wird, dass „Javascript aktiviert sein muss, um diese App auszuführen“. Dasselbe gilt für /redoc, und außerdem gibt das Konsolenprotokoll für die JS-Dateien Folgendes aus: „Nicht abgefangener Syntaxfehler: Unerwartetes Token ‚<‘“.
Ich habe vergessen zu erwähnen, dass es sich um eine React-App handelt, aber die App selbst funktioniert einwandfrei. Das Backend ist in Python/Django