Tôi muốn lưu trữ nhiều trang web trong một máy chủ bằng proxy ngược nginx bằng cách làm theo hướng dẫn này
https://www.datanovia.com/en/lessons/how-host-multiple-https-websites-on-one-server/
Proxy Nginx và mỗi trang web được khởi chạy riêng với Docker.
Nhưng mỗi khi tôi tải lại một trong các trang web, nó sẽ tải nội dung của trang web khác. Ví dụ:
Tải trang webone.tk lần đầu tiên, tải nội dung của trang web ONE.
Làm mới websiteone.tk , tải nội dung của trang web HAI
Làm mới lại trang webone.tk, tải nội dung của trang web BA
Tải trang webtwo.tk lần đầu tiên, tải trang web HAI nội dung
Làm mới websitetwo.tk , đã tải BA nội dung trang web.
Tôi là người mới bắt đầu cho cả nginx và docker. Tôi không thể biết liệu sự cố xảy ra trong nginx hay docker.Có thể bất cứ ai xin vui lòng tư vấn? Cảm ơn rất nhiều.
Nginx-proxy default.conf là
bản đồ $http_x_forwarded_proto $proxy_x_forwarded_proto { mặc định $http_x_forwarded_proto;
'' $sơ đồ;
}
bản đồ $http_x_forwarded_port $proxy_x_forwarded_port {
$http_x_forwarded_port mặc định;
'' $server_port;
}
bản đồ $http_upgrade $proxy_connection {
nâng cấp mặc định;
'' đóng lại;
}
server_names_hash_bucket_size 128;
bản đồ $proxy_x_forwarded_proto $proxy_x_forwarded_ssl {
mặc định tắt;
bật https;
}
văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng javascript/ứng dụng json/văn bản x-javascript/ứng dụng xml/ứng dụng xml/xml+rss t>log_format vhost '$host $remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$upstream_addr"';
truy cập_đăng xuất;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA3> tắt ssl_prefer_server_ciphers;
error_log /dev/stderr;
# Hỗ trợ HTTP 1.1
proxy_http_version 1.1;
tắt proxy_buffering;
proxy_set_header Máy chủ $http_host;
proxy_set_header Nâng cấp $http_upgrade;
proxy_set_header Kết nối $proxy_connection;
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 $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl;
proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;
proxy_set_header X-Original-URI $request_uri;
# Giảm thiểu cuộc tấn công httpoxy (xem README để biết chi tiết)
proxy_set_header Proxy "";
người phục vụ {
tên máy chủ _; # Đây chỉ là một giá trị không hợp lệ sẽ không bao giờ kích hoạt trên tên máy chủ thực.
server_tokens tắt;
nghe 80;
access_log /var/log/nginx/access.log vhost;
trả lại 503;
}
người phục vụ {
tên máy chủ _; # Đây chỉ là một giá trị không hợp lệ sẽ không bao giờ kích hoạt trên tên máy chủ thực.
server_tokens tắt;
nghe 443 ssl http2;
access_log /var/log/nginx/access.log vhost;
trả lại 503;
ssl_session_cache được chia sẻ:SSL:50m;
tắt ssl_session_tickets;
ssl_certificate /etc/nginx/certs/default.crt;
ssl_certificate_key /etc/nginx/certs/default.key;
}
#website.tk
thượng nguồn websiteone.tk {
## Có thể kết nối với mạng "nginx-proxy"
# websiteonetk_my-app_1
máy chủ 192.168.32.8:80;
}
người phục vụ {
server_name websiteone.tk;
nghe 80 ;
access_log /var/log/nginx/access.log vhost;
# Không chuyển hướng HTTPS Thử thách Let'sEncrypt ACME
vị trí ^~ /.well-known/acme-challenge/ {
auth_basic tắt;
auth_request tắt;
chấp nhận tất cả;
gốc /usr/share/nginx/html;
try_files $uri =404;
nghỉ;
}
địa điểm / {
trả lại 301 https://$host$request_uri;
}
}
người phục vụ {
server_name websiteone.tk;
nghe 443 ssl http2 ;
access_log /var/log/nginx/access.log vhost;
ssl_session_timeout 5 phút;
ssl_session_cache được chia sẻ:SSL:50m;
tắt ssl_session_tickets;
ssl_certificate /etc/nginx/certs/websiteone.tk.crt;
ssl_certificate_key /etc/nginx/certs/websiteone.tk.key;
ssl_dhparam /etc/nginx/certs/websiteone.tk.dhparam.pem;
ssl_bật ghim;
ssl_stapling_verify bật;
ssl_trusted_certificate /etc/nginx/certs/websiteone.tk.chain.pem;
add_header Strict-Transport-Security "max-age=31536000" luôn luôn;
bao gồm /etc/nginx/vhost.d/default;
địa điểm / {
proxy_pass http://websiteone.tk;
}
}
#trangwebhai.tk
trang web ngược dòngtwo.tk {
## Có thể kết nối với mạng "nginx-proxy"
# websitetwotk_my-app_1
máy chủ 192.168.32.13:80;
}
người phục vụ {
server_name websitetwo.tk;
nghe 80 ;
access_log /var/log/nginx/access.log vhost;
# Không chuyển hướng HTTPS Thử thách Let'sEncrypt ACME
vị trí ^~ /.well-known/acme-challenge/ {
auth_basic tắt;
auth_request tắt;
chấp nhận tất cả;
gốc /usr/share/nginx/html;
try_files $uri =404;
nghỉ;
}
địa điểm / {
trả lại 301 https://$host$request_uri;
}
}
người phục vụ {
server_name websitetwo.tk;
nghe 443 ssl http2 ;
access_log /var/log/nginx/access.log vhost;
ssl_session_timeout 5 phút;
ssl_session_cache được chia sẻ:SSL:50m;
tắt ssl_session_tickets;
ssl_certificate /etc/nginx/certs/websitetwo.tk.crt;
ssl_certificate_key /etc/nginx/certs/websitetwo.tk.key;
ssl_dhparam /etc/nginx/certs/websitetwo.tk.dhparam.pem;
ssl_bật ghim;
ssl_stapling_verify bật;
ssl_trusted_certificate /etc/nginx/certs/websitetwo.tk.chain.pem;
add_header Strict-Transport-Security "max-age=31536000" luôn luôn;
bao gồm /etc/nginx/vhost.d/default;
địa điểm / {
proxy_pass http://websitetwo.tk;
}
}
#websiteba.tk
trang web ngược dòng three.tk {
## Có thể kết nối với mạng "nginx-proxy"
# websitebatk_my-app_1
máy chủ 192.168.32.3:80;
}
người phục vụ {
server_name websiteba.tk;
nghe 80 ;
access_log /var/log/nginx/access.log vhost;
# Không chuyển hướng HTTPS Thử thách Let'sEncrypt ACME
vị trí ^~ /.well-known/acme-challenge/ {
auth_basic tắt;
auth_request tắt;
chấp nhận tất cả;
gốc /usr/share/nginx/html;
try_files $uri =404;
nghỉ;
}
địa điểm / {
trả lại 301 https://$host$request_uri;
}
}
người phục vụ {
server_name websiteba.tk;
nghe 443 ssl http2 ;
access_log /var/log/nginx/access.log vhost;
ssl_session_timeout 5 phút;
ssl_session_cache được chia sẻ:SSL:50m;
tắt ssl_session_tickets;
ssl_certificate /etc/nginx/certs/websitethree.tk.crt;
ssl_certificate_key /etc/nginx/certs/websitethree.tk.key;
ssl_dhparam /etc/nginx/certs/websitethree.tk.dhparam.pem;
ssl_bật ghim;
ssl_stapling_verify bật;
ssl_trusted_certificate /etc/nginx/certs/websitethree.tk.chain.pem;
add_header Strict-Transport-Security "max-age=31536000" luôn luôn;
bao gồm /etc/nginx/vhost.d/default;
địa điểm / {
proxy_pass http://websitethree.tk;
}
}
docker-compose cho proxy nginx là
phiên bản: '3.6'
dịch vụ:
nginx:
hình ảnh: nginx
nhãn:
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
container_name: nginx
khởi động lại: trừ khi dừng
cổng:
- "80:80"
- "443:443"
khối lượng:
- ./conf.d:/etc/nginx/conf.d
- ./vhost.d:/etc/nginx/vhost.d
- ./html:/usr/share/nginx/html
- ./certs:/etc/nginx/certs:ro
nginx-gen:
hình ảnh: jwilder/docker-gen
lệnh: -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
container_name: nginx-gen
khởi động lại: trừ khi dừng
khối lượng:
- ./conf.d:/etc/nginx/conf.d
- ./vhost.d:/etc/nginx/vhost.d
- ./html:/usr/share/nginx/html
- ./certs:/etc/nginx/certs:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro
nginx-letsencrypt:
hình ảnh: jrcs/letsencrypt-nginx-proxy-đồng hành
container_name: nginx-letsencrypt
khởi động lại: trừ khi dừng
khối lượng:
- ./conf.d:/etc/nginx/conf.d
- ./vhost.d:/etc/nginx/vhost.d
- ./html:/usr/share/nginx/html
- ./certs:/etc/nginx/certs:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
môi trường:
NGINX_DOCKER_GEN_CONTAINER: "nginx-gen"
NGINX_PROXY_CONTAINER: "nginx"
mạng:
mặc định:
bên ngoài:
tên: nginx-proxy
Nginx default.conf cho một trong các trang web là
người phục vụ {
gốc/ứng dụng2;
chỉ số index.php;
vị trí ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
bao gồm fastcgi_params;
}
}
Docker-compose/yml cho một trong các trang web bên dưới.
Thư mục làm việc của trang web là /application1.
Websitehai thư mục làm việc là /application2. vân vân
phiên bản: '3.1'
dịch vụ:
ứng dụng của tôi:
hình ảnh: 'nginx:alpine'
khối lượng:
- '.:/application2'
- './phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf'
khởi động lại: luôn luôn
môi trường:
- VIRTUAL_HOST=websitehai.tk
- ẢO_PORT=80
- LETSENCRYPT_HOST=websitetwo.tk
lộ ra:
- 80
con thư:
hình ảnh: 'mailhog/mailhog:latest'
cổng:
- '21001:8025'
php-fpm:
xây dựng: phpdocker/php-fpm
working_dir: /application2
khối lượng:
- '.:/application2'
- './phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/8.1/fpm/conf.d/99-overrides.ini'
mạng:
mặc định:
bên ngoài:
tên: nginx-proxy