Tôi có cấu hình nginx với SSL được định cấu hình và hai lần chuyển hướng đến bộ chứa docker. Một trong số chúng (chỉnh sửa https://psono.example.com/portal) đang hoạt động, nhưng cái chuyển tiếp tên miền (chỉnh sửa https://psono.example.com/) không hoạt động và thay vào đó dẫn đến chuyển hướng vô tận (https://psono.example.com/psono.example.com/psono.example.com/psono.example.com/psono.example.com/...)
Đây là cấu hình của tôi.
người phục vụ {
nghe 80;
server_name psono.example.com;
trả lại 301 https://$host$request_uri;
}
người phục vụ {
nghe 443 ssl http2;
server_name psono.example.com;
ssl_protocols TLSv1.2;
bật ssl_prefer_server_ciphers;
ssl_session_cache được chia sẻ:SSL:10m;
tắt ssl_session_tickets;
ssl_dập ghim vào;
ssl_stapling_verify bật;
ssl_session_timeout 1d;
trình phân giải 8.8.8.8 8.8.4.4 hợp lệ=300 giây;
bộ phân giải_thời gian chờ 5 giây;
ssl_ciphers'';
# Bình luận điều này nếu bạn biết bạn đang làm gì
# add_header Strict-Transport-Security "max-age=63072000; bao gồm tên miền phụ; tải trước";
add_header Chính sách giới thiệu cùng nguồn gốc;
add_header X-Frame-Options TỪ CHỐI;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
# Nếu bạn cũng đã cài đặt máy chủ tệp quản trị phía sau miền proxy ngược này, hãy thêm URL máy chủ tệp của bạn, ví dụ:. https://fs01.example.com cũng là connect-src:
add_header Chính sách-bảo mật nội dung "default-src 'none'; manifest-src 'self'; connect-src 'self' https://static.psono.com https://api.pwnedpasswords.com https://storage .googleapis.com https://*.digitaloceanspaces.com https://*.blob.core.windows.net https://*.s3.amazonaws.com; font-src 'self'; img-src 'self' ' data:; script-src 'self'; style-src 'self' 'unsafe-inline'; object-src 'self'";
ssl_certificate /etc/letsencrypt/live/psono.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/psono.example.com/privkey.pem;
client_max_body_size 256m;
bật gzip;
gzip_disable "msie6";
bật gzip_vary;
gzip_proxied bất kỳ;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng json/ứng dụng x-javascript/văn bản javascript/ứng dụng xml/ứng dụng xml/văn bản xml+rss/ứng dụng javascript/ứng dụng vnd.ms-fontobject/phông chữ x-font-ttf/hình ảnh opentype /svg+xml image/x-icon;
gốc/var/www/html;
vị trí/máy chủ {
viết lại ^/server/(.*) /$1 break;
proxy_set_header Máy chủ lưu trữ $host;
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;
add_header Sửa đổi lần cuối $date_gmt;
add_header Pragma "no-cache";
add_header Cache-Control "riêng tư, max-age=0, no-cache, no-store";
if_modified_kể từ khi tắt;
hết hạn;
tắt thẻ;
proxy_pass http://localhost:10100;
}
vị trí ~* ^/portal.*\.(?:ico|css|js|gif|jpe?g|png|eot|woff|woff2|ttf|svg|otf)$ {
hết hạn 30d;
add_header Pragma công khai;
add_header Kiểm soát bộ đệm "công khai";
# Xóa # ở đầu các dòng sau nếu bạn có máy khách web quản trị đang chạy trong bộ chứa docker
proxy_set_header Máy chủ lưu trữ $host;
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_pass http://localhost:10102;
proxy_redirect http://localhost:10102 https://psono.example.com;
}
vị trí ~* \.(?:ico|css|js|gif|jpe?g|png|eot|woff|woff2|ttf|svg|otf)$ {
hết hạn 30d;
add_header Pragma công khai;
add_header Kiểm soát bộ đệm "công khai";
# Xóa # ở đầu các dòng sau nếu bạn có webclient đang chạy trong bộ chứa docker
proxy_set_header Máy chủ lưu trữ $host;
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_pass http://localhost:10101;
proxy_redirect http://localhost:10101 https://psono.example.com;
}
# Xóa # hàng đầu khỏi các dòng sau nếu bạn có máy khách web quản trị đang chạy trong bộ chứa docker
vị trí/cổng thông tin {
proxy_set_header Máy chủ lưu trữ $host;
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_read_timeout 90;
proxy_pass http://localhost:10102;
}
# Xóa # hàng đầu khỏi các dòng sau nếu bạn có máy khách web quản trị KHÔNG chạy trong bộ chứa docker
# vị trí/cổng thông tin {
# chỉ mục index.html index.htm;
# try_files $uri /portal/index.html; # chuyển tiếp tất cả các yêu cầu tới index.html
# }
# Xóa # ở đầu các dòng sau nếu bạn có webclient đang chạy trong bộ chứa docker
địa điểm / {
proxy_set_header Máy chủ lưu trữ $host;
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_pass http://localhost:10101;
proxy_read_timeout 90;
#
proxy_redirect http://localhost:10101 https://psono.example.com;
}
}
Chỉnh sửa
Đầu ra của curl -v là:
* Đang thử 5.9.74.183:443...
* Bộ TCP_NODELAY
* Đã kết nối với cổng psono.example.com (5.9.74.183) 443 (#0)
* ALPN, cung cấp h2
* ALPN, cung cấp http/1.1
* đặt thành công vị trí xác minh chứng chỉ:
* Tệp CA: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), bắt tay TLS, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), bắt tay TLS, Chứng chỉ (11):
* TLSv1.2 (IN), bắt tay TLS, trao đổi khóa máy chủ (12):
* TLSv1.2 (IN), bắt tay TLS, Máy chủ hoàn tất (14):
* TLSv1.2 (OUT), bắt tay TLS, Trao đổi khóa máy khách (16):
* TLSv1.2 (OUT), Thay đổi mật mã TLS, Thay đổi thông số mật mã (1):
* TLSv1.2 (OUT), bắt tay TLS, Đã hoàn thành (20):
* TLSv1.2 (IN), bắt tay TLS, Đã hoàn thành (20):
* Kết nối SSL sử dụng TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, máy chủ chấp nhận sử dụng h2
* Chứng chỉ máy chủ:
* chủ đề: CN=psono.example.com
* ngày bắt đầu: 1 tháng 12 14:53:24 2021 GMT
* ngày hết hạn: 1 tháng 3 14:53:23 2022 GMT
* chủ đềAltName: máy chủ "psono.example.com" khớp với "psono.example.com" của chứng chỉ
* tổ chức phát hành: C=US; O=Hãy mã hóa; CN=R3
* Chứng chỉ SSL xác minh ok.
* Sử dụng HTTP2, máy chủ hỗ trợ đa dụng
* Trạng thái kết nối đã thay đổi (đã xác nhận HTTP/2)
* Sao chép dữ liệu HTTP/2 trong bộ đệm luồng sang bộ đệm kết nối sau khi nâng cấp: len=0
* Sử dụng ID luồng: 1 (xử lý dễ dàng 0x557ac8936e10)
> NHẬN / HTTP/2
> Máy chủ: psono.example.com
> tác nhân người dùng: curl/7.68.0
> chấp nhận: */*
>
* Trạng thái kết nối đã thay đổi (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 403
< máy chủ: nginx/1.18.0 (Ubuntu)
< ngày: Thứ năm, ngày 02 tháng 12 năm 2021 06:53:11 GMT
< loại nội dung: văn bản/html
< độ dài nội dung: 162
<
<html>
<head><title>403 Bị cấm</title></head>
<body>
<center><h1>403 Bị cấm</h1></center>
<hr><center>nginx/1.18.0 (Ubuntu)</center>
</body>
</html>