Als Fortsetzung werde ich die Nginx-Einstellungen bearbeiten und hinzufügen und versuchen, die SSL- (HTTPS) und BASIC-Authentifizierung hinzuzufügen.
Verzeichnisstruktur (Auszug)
$ tree
.
├── app
├── docker-compose.yml
└── web
├── conf.d
│ └── app.conf
└── ssl
├── server.crt
└── server.key
--Modifikation von docker-compose.yml
--Modifizieren / Hinzufügen von Dateien im Verzeichnis "web"
conf.d / app.conf
ssl /
Verzeichnis)Brauche jeden
Das Detail ist direkt unten:
docker-compose.yml
Wie folgt behoben:
docker-compose.yml
version: '3'
services:
web:
container_name: web
image: nginx:alpine
depends_on:
- app
ports:
- "80:80"
- "${PORT:-8443:443}"
volumes:
- ./web/conf.d:/etc/nginx/conf.d
- ./web/ssl:/etc/nginx/ssl
networks:
- nginx_network
app:
container_name: app
image: test_fastapi_app
build:
context: ./app
dockerfile: Dockerfile
expose:
- 8000
networks:
- nginx_network
# volumes:
# - ./app/app:/app/app
# command: "uvicorn app.main:app --host 0.0.0.0 --proxy-headers --forwarded-allow-ips * --reload"
networks:
nginx_network:
driver: bridge
Wenn Sie nur den Teil extrahieren, bei dem es einen Unterschied gibt,
docker-compose.yml(Auszug)
services:
web:
ports:
# - "80:80"
- "${PORT:-8443:443}"
volumes:
- ./web/conf.d:/etc/nginx/conf.d
- ./web/ssl:/etc/nginx/ssl
web / ssl
(Schlüssel / Zertifikat)web
└── ssl
├── server.crt
└── server.key
Bereiten Sie diejenigen vor, die server.crt
und server.key
in ↑ entsprechen, und legen Sie sie im Verzeichnis web / ssl
ab.
In diesem Beispiel wird das Skript (einzeilig), das das Oleore-Zertifikat automatisch generiert hat, so platziert, wie es ist:
make_key.sh
#!/usr/bin/env sh
openssl req -batch -new -x509 -newkey rsa:4096 -nodes -sha256 \
-subj /CN=example.com/O=example -days 3650 \
-keyout ./server.key \
-out ./server.crt
web/conf.d/app.conf
Schreiben Sie die Nginx-Konfigurationsdatei neu.
conf:conf.d/app.conf
upstream backend {
server app:8000;
}
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_protocols TLSv1.2 TLSv1.3;
# server_name _;
index index.html index.htm;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Server $http_host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect http:// https://;
proxy_pass http://backend;
}
# log
# access_log /var/log/nginx/access.log;
# error_log /var/log/nginx/error.log;
}
server_tokens off;
Kritische Änderungen:
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_protocols TLSv1.2 TLSv1.3;
Proxy _ ***
in location /
――Ich erinnere mich nicht viel an die Details, weil ich es so oft gemacht habe und viel Versuch und Irrtum hatte. .. ..
――So kann es mit unnötigen Einstellungen gemischt werden. .. .. proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Server $http_host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect http:// https://;
Vorerst damit
docker-compose up -d
Wenn Sie auf https: // localhost: 8443 (von Ihnen selbst festgelegter Port) usw. zugreifen, können Sie bestätigen, dass die https-Kommunikation verwendet wird.
Lassen Sie uns übrigens zur BASIC-Zertifizierung aufsteigen
.htpasswd
im Voraus.htpasswd
selbst ist der gleiche wie bei Apache httpd usw..
├── app
├── docker-compose.yml
└── web
├── conf.d
| ├── .htpasswd
│ └── app.conf
└── ssl
web / conf.d / app.conf
:conf:conf.d/app.conf
upstream backend {
server app:8000;
}
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_protocols TLSv1.2 TLSv1.3;
# basic-auth
auth_basic "BASIC AUTH";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
# server_name _;
index index.html index.htm;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Server $http_host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect http:// https://;
proxy_pass http://backend;
}
# log
# access_log /var/log/nginx/access.log;
# error_log /var/log/nginx/error.log;
}
server_tokens off;
↑ Ich habe folgendes hinzugefügt:
app.conf (zusätzlicher Teil)
# basic-auth
auth_basic "BASIC AUTH";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
Damit kann beispielsweise die Authentifizierung wie folgt erfolgen:
(* Diesmal ist es mein Zertifikat, daher wird eine Warnung ausgegeben.)
--Nginx Reverse Proxy-Einstellungen
https://qiita.com/imoimo2009/items/515ceaeea5aeb1bade3a
https://qiita.com/tnoce/items/ded6d3d298da5972ab63
https://ja.nuxtjs.org/faq/nginx-proxy/
https://blog.akagi.jp/archives/3883.html
https://www.busterworks.co.jp/archives/64
https://threetreeslight.com/posts/2014/03/14/nginx%E3%81%A7ssl-reverse-proxy%E8%A8%AD%E5%AE%9A/
https://tech-lab.sios.jp/archives/9922
Mit Nginx von http nach https umleiten
https://qiita.com/fisherman08/items/e39e67e85ef07a1ef3db
GRUNDLEGENDE Authentifizierung in Nginx
http://vdeep.net/nginx-basic-authentication
https://www.yoheim.net/blog.php?q=20170804
https://qiita.com/kotarella1110/items/be76b17cdbe61ff7b5ca
https://qiita.com/STSynthe/items/5387bc33e7be315ae338
https://qiita.com/ekzemplaro/items/0385c34c4325da2f2af6
https://note.com/club_cloud/n/n581d1995139f
Generieren Sie .htpasswd
https://asakawajunya.hatenablog.com/entry/20130706/1373046305
https://qiita.com/shell/items/5606d37a802e39479036
https://www.junk-works.science/generate-htpasswd-with-openssl/
https://www.luft.co.jp/cgi/htpasswd.php
Ein Liner meines Zertifikats
https://qiita.com/ngyuki/items/27e56196fbf2d68a9f7f
https://qiita.com/marcy-terui/items/2f63d7f170ff82531245
https://nekonenene.hatenablog.com/entry/2019/08/10/153430
Recommended Posts