Tôi đã cấu hình một container Docker để chạy Nginx và thiết lập các tập tin/etc/nginx/sites-available/default như hình dưới đâyNginx SSL bên trong một container Docker
server
{
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name example.com;
location/{
try_files $uri $uri/ /index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server
{
listen 443;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name example.com;
ssl on;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
location/{
try_files $uri $uri/ /index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
tôi lập bản đồ/etc/ssl/certs &/etc/ssl/thư mục riêng trên máy chủ khi tôi chạy container Docker
docker run -dt -p 8080:443 -p 8081:80 -v /t-base/log:/var/log/nginx -v
/etc/ssl/certs:/etc/ssl/certs -v /etc/ssl/private:/etc/ssl/private nginx
Docker ps shows
Up n minutes 0.0.0.0:8081->80/tcp 0.0.0.0:8080->443/tcp <container-name>
và lỗi nginx log file bên trong/t-base/thư mục log ánh xạ vẫn trống.
docker exec -it <container-name> /bin/bash
Tiếp theo
service nginx status
chỉ trở lại và nói rằng nginx đang chạy.
Tất cả những điều trên sẽ cho biết mọi thứ đang hoạt động chính xác. Tuy nhiên, tôi thấy rằng trong khi tôi có thể duyệt đến
http://example.com:8080
lần lượt lên các trang mặc định
https://example.com:8081
có Chrome hiển thị cho tôi "buồn cười" trang báo lỗi của nó mặc định. Tôi không thể nhìn thấy những gì tôi có thể làm sai ở đây. Tôi rất cảm kích mọi sự giúp đỡ.
lệnh chạy của bạn có nó ngược từ thử nghiệm của bạn? 8080 = ssl, 8081 = nonssl. – user2105103