Traefik转发SSL到php-nginx docker镜像(https流量到Laravel) &



我需要一些关于Traefik或Nginx设置的专家建议。一些线索会很好。

starapp -我想在这里运行一个Laravel应用程序。我注意到当使用HTTP的请求到达laravel应用程序时,响应变得混合。所以我试图将整个SSL流量发送到laravel应用程序。

这是我的docker-compose for php-nginx docker。我可以启动码头。但是,当请求到达此实例时。starapp的docker日志出现错误

docker-compose.yml

starapp:
image: webdevops/php-nginx:7.4         
container_name: starapp
depends_on:
- mysql    
restart: always
environment:
- PHP_DISPLAY_ERRORS=1
- PHP_MEMORY_LIMIT=2048M
- PHP_MAX_EXECUTION_TIME=300
- PHP_POST_MAX_SIZE=500M
- PHP_UPLOAD_MAX_FILESIZE=256M
- WEB_ALIAS_DOMAIN=app.starthardware.com.my
volumes:
- ./starhardware.com.my/app/:/app
#- ./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf
#- ./etc/nginx/default.template.conf:/etc/nginx/conf.d/default.template
- /opt/containers/ngixbased/data/assets/ssl/app.starhardware.com.my:/etc/ssl            
expose:
- 443

labels:
- traefik.enable=true
- traefik.http.services.starapp.loadbalancer.server.scheme=https      
- traefik.http.routers.starapp-secure.rule=Host(`app.starhardware.com.my`)      
- traefik.http.routers.starapp-secure.entrypoints=https     
- traefik.http.routers.starapp-secure.tls=true
- traefik.http.routers.starapp-secure.tls.certresolver=letsEncrypt

networks:
- proxy      
- backend 

当一个请求到达这个docker实例时,我得到下面的错误

starapp       | [18-Aug-2021 04:12:22] NOTICE: fpm is running, pid 49
starapp       | [18-Aug-2021 04:12:22] NOTICE: ready to handle connections
starapp       | 2021-08-18 04:12:23,352 INFO success: syslogd entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
starapp       | [SYSLOG] CRON[86]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
starapp       | 192.168.144.3 - - [18/Aug/2021:04:22:29 +0000] "x16x03x01x01x00x01x00x00xFCx03x034xF1xAF|ZxEExC2xD9rUx07x99:xF8^axB6xC1x91x18x80xF4xAExE7!AxC9xF8" 400 173 "-" "-"
starapp       | 192.168.144.3 - - [18/Aug/2021:04:22:29 +0000] "x16x03x01x01x00x01x00x00xFCx03x03x03qx1BxC3x18_xE1" 400 173 "-" "-"

接下来,我执行了a来查看nginx -T在docker实例中的状态。

root@cdeb5cd6f9e8:/# nginx -T
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# configuration file /etc/nginx/nginx.conf:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /docker.stdout ;
error_log /docker.stderr ;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

#mail {
#       # See sample authentication script at:
#       # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#       # auth_http localhost/auth.php;
#       # pop3_capabilities "TOP" "USER";
#       # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#       server {
#               listen     localhost:110;
#               protocol   pop3;
#               proxy      on;
#       }
# 
#       server {
#               listen     localhost:143;
#               protocol   imap;
#               proxy      on;
#       }
#}

# configuration file /etc/nginx/modules-enabled/50-mod-http-auth-pam.conf:
load_module modules/ngx_http_auth_pam_module.so;
# configuration file /etc/nginx/modules-enabled/50-mod-http-dav-ext.conf:
load_module modules/ngx_http_dav_ext_module.so;
# configuration file /etc/nginx/modules-enabled/50-mod-http-echo.conf:
load_module modules/ngx_http_echo_module.so;
# configuration file /etc/nginx/modules-enabled/50-mod-http-geoip.conf:
load_module modules/ngx_http_geoip_module.so;
# configuration file /etc/nginx/modules-enabled/50-mod-http-image-filter.conf:
load_module modules/ngx_http_image_filter_module.so;
# configuration file /etc/nginx/modules-enabled/50-mod-http-subs-filter.conf:
load_module modules/ngx_http_subs_filter_module.so;
# configuration file /etc/nginx/modules-enabled/50-mod-http-upstream-fair.conf:
load_module modules/ngx_http_upstream_fair_module.so;
# configuration file /etc/nginx/modules-enabled/50-mod-http-xslt-filter.conf:
load_module modules/ngx_http_xslt_filter_module.so;
# configuration file /etc/nginx/modules-enabled/50-mod-mail.conf:
load_module modules/ngx_mail_module.so;
# configuration file /etc/nginx/modules-enabled/50-mod-stream.conf:
load_module modules/ngx_stream_module.so;
# configuration file /etc/nginx/mime.types:
types {
text/html                             html htm shtml;
text/css                              css;
text/xml                              xml;
image/gif                             gif;
image/jpeg                            jpeg jpg;
application/javascript                js;
application/atom+xml                  atom;
application/rss+xml                   rss;
text/mathml                           mml;
text/plain                            txt;
text/vnd.sun.j2me.app-descriptor      jad;
text/vnd.wap.wml                      wml;
text/x-component                      htc;
image/png                             png;
image/tiff                            tif tiff;
image/vnd.wap.wbmp                    wbmp;
image/x-icon                          ico;
image/x-jng                           jng;
image/x-ms-bmp                        bmp;
image/svg+xml                         svg svgz;
image/webp                            webp;
application/font-woff                 woff;
application/java-archive              jar war ear;
application/json                      json;
application/mac-binhex40              hqx;
application/msword                    doc;
application/pdf                       pdf;
application/postscript                ps eps ai;
application/rtf                       rtf;
application/vnd.apple.mpegurl         m3u8;
application/vnd.ms-excel              xls;
application/vnd.ms-fontobject         eot;
application/vnd.ms-powerpoint         ppt;
application/vnd.wap.wmlc              wmlc;
application/vnd.google-earth.kml+xml  kml;
application/vnd.google-earth.kmz      kmz;
application/x-7z-compressed           7z;
application/x-cocoa                   cco;
application/x-java-archive-diff       jardiff;
application/x-java-jnlp-file          jnlp;
application/x-makeself                run;
application/x-perl                    pl pm;
application/x-pilot                   prc pdb;
application/x-rar-compressed          rar;
application/x-redhat-package-manager  rpm;
application/x-sea                     sea;
application/x-shockwave-flash         swf;
application/x-stuffit                 sit;
application/x-tcl                     tcl tk;
application/x-x509-ca-cert            der pem crt;
application/x-xpinstall               xpi;
application/xhtml+xml                 xhtml;
application/xspf+xml                  xspf;
application/zip                       zip;
application/octet-stream              bin exe dll;
application/octet-stream              deb;
application/octet-stream              dmg;
application/octet-stream              iso img;
application/octet-stream              msi msp msm;
application/vnd.openxmlformats-officedocument.wordprocessingml.document    docx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet          xlsx;
application/vnd.openxmlformats-officedocument.presentationml.presentation  pptx;
audio/midi                            mid midi kar;
audio/mpeg                            mp3;
audio/ogg                             ogg;
audio/x-m4a                           m4a;
audio/x-realaudio                     ra;
video/3gpp                            3gpp 3gp;
video/mp2t                            ts;
video/mp4                             mp4;
video/mpeg                            mpeg mpg;
video/quicktime                       mov;
video/webm                            webm;
video/x-flv                           flv;
video/x-m4v                           m4v;
video/x-mng                           mng;
video/x-ms-asf                        asx asf;
video/x-ms-wmv                        wmv;
video/x-msvideo                       avi;
}
# configuration file /etc/nginx/conf.d/10-docker.conf:
include /opt/docker/etc/nginx/global.conf;
include /opt/docker/etc/nginx/php.conf;
include /opt/docker/etc/nginx/conf.d/*.conf;
include /opt/docker/etc/nginx/vhost.conf;
# configuration file /opt/docker/etc/nginx/global.conf:
# deprecated
# configuration file /opt/docker/etc/nginx/php.conf:
# deprecated
# configuration file /opt/docker/etc/nginx/conf.d/10-php.conf:
upstream php {
server 127.0.0.1:9000;
}
# configuration file /opt/docker/etc/nginx/vhost.conf:
server {
listen 80 default_server;
server_name  _ app.starthardware.com.my docker;
root "/app";
index index.php;
include /opt/docker/etc/nginx/vhost.common.d/*.conf;
}
##############
# SSL
##############
server {
listen 443 default_server;
server_name  _ app.starthardware.com.my docker;
root "/app";
index index.php;
include /opt/docker/etc/nginx/vhost.common.d/*.conf;
include /opt/docker/etc/nginx/vhost.ssl.conf;
}
# configuration file /opt/docker/etc/nginx/vhost.common.d/10-general.conf:
client_max_body_size 50m;
# configuration file /opt/docker/etc/nginx/vhost.common.d/10-location-root.conf:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# configuration file /opt/docker/etc/nginx/vhost.common.d/10-log.conf:
access_log   /docker.stdout;
error_log    /docker.stderr warn;
# configuration file /opt/docker/etc/nginx/vhost.common.d/10-php.conf:
location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME     $request_filename;
fastcgi_read_timeout 600;
}
# configuration file /etc/nginx/fastcgi_params:
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
# configuration file /opt/docker/etc/nginx/vhost.ssl.conf:
ssl           on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # not possible to do exclusive
ssl_ciphers   'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA';
ssl_prefer_server_ciphers on;
ssl_certificate     /opt/docker/etc/nginx/ssl/server.crt;
ssl_certificate_key /opt/docker/etc/nginx/ssl/server.key;
root@cdeb5cd6f9e8:/# code here

有什么建议吗?或者我可以检查其他什么来确定这种情况的根源。

谢谢。

这是我们的docker-compose文件。

nginx:

image: "nginx:alpine"
ports:
- 5000:443
links:
- registry:registry
volumes:
- ./auth:/etc/nginx/conf.d
- ./auth/nginx.conf:/etc/nginx/nginx.conf:ro
registry:
image: registry:2.7.0
volumes:
- ./data:/var/lib/registry

我们使用nginx前面。这里的registry部分实际上与docker-registry容器相关。我认为你可以在那里替换你的应用。但是使用webdevops/php-nginx:7.4可能会给你带来问题,因为它已经内置了nginx

最新更新