2015-01-13 32 views
16

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 đỡ.

+1

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

Trả lời

10

Bạn đã thay đổi các cổng. Theo dòng lệnh này -p 8080:443 -p 8081:80, bạn nên làm:

https://example.com:8080 ghi chú này được http s

http://example.com:8081

này nên làm việc

Các vấn đề liên quan