Khi tôi làm máy chủ lưu trữ linh miêu: 14080
từ máy chủ, nó hoạt động. Trang web được tải từ vùng chứa.
Khi tôi làm máy chủ lưu trữ linh miêu:14433
từ máy chủ, nó KHÔNG hoạt động.
Khi tôi làm linh miêu https://localhost:14433
từ máy chủ, nó KHÔNG hoạt động. Lỗi: Không thể tạo kết nối an toàn với máy chủ từ xa.
Vùng chứa đang chạy trên mạng cầu nối, được khởi chạy bởi docker-compose. IP của vùng chứa là: 172.21.0.2.
Nhưng khi tôi làm linh miêu https://172.21.0.2
NÓ HOẠT ĐỘNG...
...trang web được tải từ vùng chứa bằng chứng chỉ https và SSL. Tôi chỉ nhận được cảnh báo SSL:
172.21.02!=cert(CN<example.com>)-Tiếp tục?
...có nghĩa là CN của chứng chỉ không phù hợp với IP mà tôi đang cố mở, nhưng tôi vẫn có thể bỏ qua cảnh báo này và tiếp tục mở trang web.
Điều này có nghĩa là http đang hoạt động trên máy chủ cục bộ (và nó cũng hoạt động khi tôi sử dụng IP vùng chứa).
Nhưng https chỉ hoạt động khi tôi cố gắng kết nối bằng IP vùng chứa, nhưng nó không hoạt động khi tôi sử dụng máy chủ cục bộ.
Đây là lý do tại sao tôi nghĩ rằng có lỗi trong các liên kết cổng của các mạng được tạo bởi docker.
Tôi muốn có thể kết nối với bộ chứa bằng máy chủ cục bộ, vì vậy tôi không cần chỉ định IP mới của bộ chứa mỗi khi tôi khởi chạy lại bộ chứa, vì tôi đang định thiết lập proxy apache2 ngược trên máy chủ, vì vậy rằng thế giới bên ngoài có thể kết nối với trang web của tôi trong vùng chứa bằng https.
Đây là cài đặt Apache2 của tôi trên Máy chủ:
Tệp example.com.conf trong máy chủ apache conf của tôi:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
CustomLog /var/www/docker/example.com/log/host/custom.log combined
ErrorLog /var/www/docker/example.com/log/host/error.log
Redirect permanent / https://example.com/
ProxyRequests off
ProxyPreserveHost On
ProxyPass "/" "http://172.21.0.2/"
ProxyPassReverse "/" "http://172.21.0.2/"
</VirtualHost>
Tệp example.com-le-ssl.conf trong máy chủ apache conf của tôi:
<IfModule mod_ssl.c>
ErrorLog /var/www/docker/example.com/log/host/error.log
LogLevel debug
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
ProxyPreserveHost on
ServerAdmin [email protected]
LogLevel debug
CustomLog /var/www/docker/example.com/log/host/custom.log combined
ErrorLog /var/www/docker/example.com/log/host/error.log
<If "%{HTTP_HOST} == 'www.example.com'">
Redirect permanent / https://example.com/
</If>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLProxyEngine on
SSLEngine on
ProxyRequests off
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
ProxyPass "/" "http://172.21.0.2/"
ProxyPassReverse "/" "http://172.21.0.2/"
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
</IfModule>
Đây là conf apache của tôi trong vùng chứa:
Tệp default-ssl.conf trong máy chủ apache conf của tôi:
Tên máy chủ example.com
<VirtualHost _default_:80>
Tên máy chủ example.com
ServerAlias www.example.com
ServerADmin [email protected]
Tài liệuRoot /var/www/html/www
ErrorLog /var/log/container/error.log
CustomLog /var/log/container/custom.log kết hợp
</Máy chủ ảo>
<IfModule mod_ssl.c>
Gỡ lỗi LogLevel
<Máy chủ ảo _default_:443>
Tên máy chủ example.com
ServerAlias www.example.com
ServerAdmin [email protected]
Tài liệuRoot /var/www/html/www
Gỡ lỗi LogLevel
ErrorLog /var/log/container/error.log
CustomLog /var/log/container/custom.log kết hợp
Bao gồm /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</Máy chủ ảo>
</IfModule>
Đây là tệp docker-compose.yml của tôi:
phiên bản: '3.7'
mạng:
ứng dụng web ví dụ:
tài xế: cầu
dịch vụ:
giới thiệu:
container_name: ví dụwebapp
xây dựng:
bối cảnh: ./
dockerfile: dockerfile
mục tiêu: nhà phát triển
hình ảnh: ví dụwebapp
khởi động lại: trừ khi dừng
mạng:
- ứng dụng web ví dụ
cổng:
**- "14433:433"
- "14080:80"**
working_dir: /var/www/html
khối lượng:
- ./container_apache_conf:/etc/apache2/sites-available
- ./api:/var/www/html/api
- ./archive:/var/www/html/archive
- ./log/container:/var/log/container
- ./log/host:/var/log/host
- ./etc/letsencrypt:/etc/letsencrypt
- ./www:/var/www/html/www
Đây là Dockerfile của tôi:
TỪ cơ sở php:7.4-Apache AS
CHẠY bản cập nhật apt-get
RUN mkdir -p /var/www/html/www # trang web sẽ được lưu tại đây
RUN mkdir -p /var/log/container # nhật ký apache sẽ được lưu tại đây
# kết nối mysql và quốc tế hóa cho php
CHẠY docker-php-ext-install mysqli
CHẠY docker-php-ext-enable mysqli
CHẠY cài đặt apt-get -y libicu-dev
CHẠY docker-php-ext-configure intl
CHẠY docker-php-ext-install intl
# kích hoạt https cho apache
CHẠY a2enmod ssl
CHẠY a2ensite default-ssl.conf
TỪ cơ sở AS dev
CHẠY pecl cài đặt xdebug-3.1.1
CHẠY docker-php-ext-enable xdebug
TỪ bài kiểm tra AS cơ bản
TỪ cơ sở AS prod
Đây là những gì được tạo ra bởi:
mạng docker kiểm tra examplecom_example
[
{
"Tên": "examplecom_example",
"Id": "7311d1a7254466bd6ab44833362460cde4336ade622bca87def62bb3d840ef3f" ,
"Đã tạo": "2022-02-13T21:16:34.861655456Z",
"Phạm vi": "cục bộ",
"Người lái xe": "cầu",
"BậtIPv6": sai,
"IPAM": {
"Trình điều khiển": "mặc định",
"Tùy chọn": không,
"Cấu hình": [
{
"Mạng con": "172.21.0.0/16",
"Cổng": "172.21.0.1"
}
]
},
"Nội bộ": sai,
"Có thể đính kèm": đúng,
"Xâm nhập": sai,
"Từ cấu hình": {
"Mạng": ""
},
"Chỉ cấu hình": sai,
"Hộp đựng": {
"be53d5b37e2fbcaae49bb111b921dfd4caf5db20ed680403083333ffac983b93": {
"Tên": "ví dụ",
"ID điểm cuối": "fb1428d29e2fc9564b3e1758a7efac15909a897021320b15f 1df8c1d600efd89",
"Địa chỉ Mac": "00:00:00:00:00:00",
"Địa chỉ IPv4": "172.21.0.2/16",
"Địa chỉ IPv6": ""
},
}
]
Đây là đầu ra của docker ps:
ID CONTAINER HÌNH ẢNH LỆNH TẠO TÊN CỔNG TRẠNG THÁI
ví dụ be53d5b37e2f "docker-php-entrypoiâ¦" 11 giờ trước Lên 11 giờ 443/tcp, 0.0.0.0:14080->80/tcp, :::14080->80/tcp, 0.0.0.0:14433->433 /tcp, :::14433->433/ví dụ tcp
Tôi đang sử dụng hình ảnh docker php chính thức.
Và trong phần soạn thảo docker, tôi đang tạo một mạng cầu nối và tôi đang lập bản đồ:
Câu hỏi của tôi là:
Tại sao tôi có thể kết nối từ máy chủ đến vùng chứa của mình bằng cách sử dụng http trên http://127.0.0.1:14080, nhưng không sử dụng https trên https://127.0.0.1:14433, mặc dù cả hai cổng cho http và https (14080:80 và 14433:433) phải được ánh xạ theo cùng một cách? Và tại sao https vẫn hoạt động khi tôi kết nối với vùng chứa bằng https trên https://172.21.0.2.
Tôi nên làm gì để có thể chuyển hướng lưu lượng truy cập https từ Máy chủ apache của tôi (dưới dạng proxy ngược), sang vùng chứa apache của tôi bằng localhost, tức là https://127.0.0.1:14433/ - để vùng chứa của tôi có thể được truy cập từ internet, cũng sử dụng https và vì vậy tôi không cần chỉ định IP của vùng chứa trong cấu hình máy chủ apache của proxy https đảo ngược?