Tôi có một tệp máy chủ nginx phục vụ một số nội dung tĩnh, trông đơn giản như:
người phục vụ {
nghe 443 ssl;
ssl_certificate /etc/letsencrypt/live/this_host/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/this_host/privkey.pem;
server_name static_content;
# Không thực hiện luân phiên thích hợp các khóa mã hóa vé phiên, vì vậy
# vô hiệu hóa hoàn toàn vé phiên
tắt ssl_session_tickets;
# Cho rằng các thiết bị khách được mong đợi là tương đối hiện đại, không cần
# hỗ trợ các giao thức không an toàn
ssl_protocols TLSv1.3;
tắt ssl_prefer_server_ciphers;
vị trí /binaries/ {
auth_basic "bảo vệ tối thiểu";
auth_basic_user_file /etc/nginx/auth/.htpasswd;
gốc /var/www/static/;
}
vị trí = /apple-app-site-association {
bí danh /var/www/static/apple-app-site-association/apple-app-site-assocation;
loại { } default_type "loại nội dung: ứng dụng/json";
}
}
Tôi sử dụng lại cái này trên máy chủ sản xuất và máy chủ dàn dựng. Trên máy chủ dàn dựng, tôi cũng muốn đặt trước một API. Nếu tôi chỉ thêm một địa điểm khác vào:
vị trí ^~ /my_cool_api/v1/ {
proxy_pass http://localhost:4000/my_cool_api/v1/;
}
Nhưng sau đó, tôi có các tệp máy chủ khác nhau cho các lần phục vụ khác nhau và nó cũng được đặt tên kém là "static_content" vào thời điểm đó. Tôi muốn làm cho nó có tính mô-đun hơn, vì vậy tôi đã thử để riêng tệp đầu tiên và thêm tệp thứ hai vào máy chủ dàn:
người phục vụ {
nghe 443 ssl;
ssl_certificate /etc/letsencrypt/live/this_host/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/this_host/privkey.pem;
tên_máy chủ my_cool_api;
# Không thực hiện luân phiên thích hợp các khóa mã hóa vé phiên, vì vậy
# vô hiệu hóa hoàn toàn vé phiên
tắt ssl_session_tickets;
# Cho rằng các thiết bị khách được mong đợi là tương đối hiện đại, không cần
# hỗ trợ các giao thức không an toàn
ssl_protocols TLSv1.3;
tắt ssl_prefer_server_ciphers;
vị trí ^~ /accumulus_twig/v1/ {
proxy_pass http://localhost:4000/accumulus_twig/v1/;
}
}
Điều này không làm việc mặc dù. Sau khi tôi liên kết cả hai ở chế độ kích hoạt trang web, tôi chỉ nhận được API hoạt động trong trường hợp đó, error.log cho thấy rằng nó không thể tìm thấy các tệp (tĩnh) tại /usr/share/nginx/html/binaries/
. Không có cách mô-đun nào để có một định nghĩa máy chủ duy nhất ở 443 với tất cả các chứng chỉ thích hợp, v.v., nhưng xác định vị trí/kết quả khớp khác nhau trong các tệp khác nhau?