Presmerovanie pri proxy s URL s portom na URL bez portu

KristianSubweb
Člen | 146
+
0
-

Ahojte, chcel by som sa opýtať mám naledujúci problém. Môj Nette projekt mám rozbehaný cez docker compose.

Časť mojej konfigutácie vyzerá nasledovne:

  proxy:
    build:
      context: .
      dockerfile: .docker/proxy/nginx.Dockerfile
    ports:
      - "5001:80"
    environment:
      - PHP_HOST=web
    volumes:
      - ./public:/path/public
    networks:
      - webnet
    links:
      - web

  web:
    build:
      dockerfile: .docker/development/Dockerfile
      context: .
      args:
        - UID=${UID:-1000}
        - GID=${GID:-1000}
    tty: true
    ports:
      - 7090:7090
    working_dir: /project
    depends_on:
      - elasticsearch
      - db
    networks:
      - webnet
    volumes:
      - ./:/project
    environment:
      - IN_DOCKER=1

Môj ngnix config vyzerá takto:

server {
    server_name projectName.loc;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /projectName/public;
    charset utf8;

    # hide Nginx server tokens and version number
    server_tokens off;

    # set max post size (for file upload)
    client_max_body_size 16m;
    client_body_buffer_size 128k;

    location / {
        try_files $uri $uri/ index.php?$args;
    }

    index index.php index.html index.htm;

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass ${PHP_HOST}:9000;
        fastcgi_index index.php;
        fastcgi_read_timeout 300;

        fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        fastcgi_param PATH_TRANSLATED $document_root/$fastcgi_path_info;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

Mám nasledujuci problém, na tejto adrese mám dostupnú Nette aplikáciu http://127.0.0.1:5001/ toto funguje zatial správne no akonáhle chcem už navštiviť konkrétnu adresu napríklad http://127.0.0.1:5001/admin/auth/login tak to spraví redirect na ‚http://127.0.0.1/admin/auth/login/‘ kde odstráni port a tam už dostupna tá Nette aplikácia nieje.

S kolegom som skúšal nastaviť aj proxy

http:
    proxy:
        - 0.0.0.0/00

tak aby sme skusili všetky možnosti, no ani jedna možno nezabrala. Nestretol sa niekto už s týmto problémom. Ide o Nette 2.4 a php 7.4. Za každý napada ďakujem!

nightfish
Člen | 527
+
0
-

@KristianSubweb
V Nette configu ponechej nastavení http.proxy a zkus do konfigurace Nginxu za fastcgi_param PATH_INFO $fastcgi_path_info; přidat fastcgi_param HTTP_X_FORWARDED_PORT 5001;.
Teoreticky by tohle nastavení mohlo vést k tomu, že se v rámci RequestFactory (tady) použije číslo portu 5001 místo 80, což by následně mělo opravit vygenerované odkazy.

KristianSubweb
Člen | 146
+
0
-

nightfish napsal(a):

@KristianSubweb
V Nette configu ponechej nastavení http.proxy a zkus do konfigurace Nginxu za fastcgi_param PATH_INFO $fastcgi_path_info; přidat fastcgi_param HTTP_X_FORWARDED_PORT 5001;.
Teoreticky by tohle nastavení mohlo vést k tomu, že se v rámci RequestFactory (tady) použije číslo portu 5001 místo 80, což by následně mělo opravit vygenerované odkazy.

Skusil som a nezabralo stále ten istý problém dokonca v RequestFactory som to dumpoval a bolo to nastavné správne no stále to robí ten redirect.

Editoval KristianSubweb (3. 10. 2024 10:45)