Skip to content

static:warm command doesn't work if laravel is behind a reverse proxy #13145

@CapitaineToinon

Description

@CapitaineToinon

Bug description

When using laravel being a reverse proxy, for example hosted using docker with laravel & statamic under a docker service and nginx under another service, the statamic:static:warn option fails because it tries to hit the laravel service directly, which isn't exposed.

$ php artisan statamic:static:warm
Please wait. This may take a while if you have a lot of content.

Compiling URLs...
[✔] Entries
[✔] Taxonomies
[✔] Taxonomy terms
[✔] Custom routes
[✔] Additional

Visiting 254 URLs...
  /https://localhost  cURL error 7: Failed to connect to localhost port 443 after 2 ms: Could not connect to server (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://localhost
// ... same for all the URLs, not included

In this case, it's hitting localhost:443 when it should be hitting config('app.url') or in the case of docker, it could hit the docker container directly, for example http://nginx:80.

How to reproduce

Host statamic using docker having at least a php image and an nginx image:

services:
  laravel:
    build:
      context: .
      dockerfile: docker/laravel/Dockerfile
    networks: [laravel]
    environment:
      ...
  web:
    build:
      context: .
      dockerfile: docker/web/Dockerfile
    ports: [80]
    depends_on: [laravel]
    networks: [laravel]

Then try to run from the laravel service:

docker compose exec laravel bash
$ php artisan statamic:static:warm

Because only the nginx is exposed, the command will fail.

Logs

Environment

Environment
Application Name: Statamic
Laravel Version: 12.38.1
PHP Version: 8.4.14
Composer Version: 2.9.0
Environment: local
Debug Mode: ENABLED
URL: web
Maintenance Mode: OFF
Timezone: UTC
Locale: en

Cache
Config: NOT CACHED
Events: NOT CACHED
Routes: NOT CACHED
Views: CACHED

Drivers
Broadcasting: log
Cache: file
Database: pgsql
Logs: stack / single
Mail: log
Queue: database
Scout: meilisearch
Session: database

Storage
public/storage: LINKED

Pulse
Enabled: ENABLED
Version: v1.4.3

Livewire
Livewire: v3.6.4

Statamic
Addons: 1
Sites: 1
Stache Watcher: Enabled (auto)
Static Caching: half
Version: 6.0.0-alpha.16 PRO

Statamic Addons
statamic/eloquent-driver: dev-master

Statamic Eloquent Driver
Addon Settings: file
Asset Containers: file
Assets: eloquent
Blueprints: file
Collection Trees: eloquent
Collections: file
Entries: eloquent
Fieldsets: file
Form Submissions: eloquent
Forms: file
Global Sets: file
Global Variables: eloquent
Navigation Trees: eloquent
Navigations: file
Revisions: eloquent
Sites: file
Taxonomies: file
Terms: eloquent
Tokens: eloquent

Installation

Fresh statamic/statamic site via CLI

Additional details

This has been discussed in the idea repo. I'm doing an issue as I intend to make a PR for this fix.

http://github.com/statamic/ideas/issues/1383

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions