gpt4 book ai didi

php - nginx不为ingress-nginx后面的PHP应用提供JS,CSS文件

转载 作者:行者123 更新时间:2023-12-02 12:09:49 25 4
gpt4 key购买 nike

似乎无法解决此问题,并且在我出问题的地方需要帮助。
有一个旧的PHP应用程序在/admin中被子路径了。 ingress-nginx将其流量转发到Pod中运行的nginx服务器。我已验证自己可以执行以下操作,并且可以正确提供 Assets :

  • kubectl port-forward <admin-pod> 4000:4000
  • skaffold dev --port-forward
  • docker run -p 4000:4000 <image>

  • 但是,当我尝试连接通过 minikube ip(例如 192.168.64.5/admin)通过浏览器访问它时,我得到以下信息:
    enter image description here
    它显示HTML,但是没有 Assets 正在加载,因为找不到 Assets ,我不确定为什么。
    这是为PHP应用程序提供服务的 nginx default.conf。如果可能的话,我想在这里进行修复,而不是在 ingress.yaml中进行修复,因为它们往往会弄乱我的其他路线,并花了我一些时间才能使它们正常工作。
    这是这些文件的内容:
    # default.conf

    server {
    listen 4000;
    # rewrite ^([^.]*[^/])$ $1/ permanent;
    root /usr/share/nginx/html/src;

    include /etc/nginx/default.d/*.conf;

    index app.php index.php index.html index.htm;

    client_max_body_size 500m;

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

    location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    # Mitigate https://httpoxy.org/ vulnerabilities
    fastcgi_param HTTP_PROXY "";
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
    }
    }
    # ingress.yaml

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
    annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.org/client-max-body-size: "500m"
    name: ingress-service-dev
    namespace: default
    spec:
    rules:
    - http:
    paths:
    - path: /adminv2/
    backend:
    serviceName: admin-new-cluster-ip-service-dev
    servicePort: 4001
    - path: /admin/
    backend:
    serviceName: admin-old-cluster-ip-service-dev
    servicePort: 4000
    - path: /api/
    backend:
    serviceName: api-cluster-ip-service-dev
    servicePort: 5000
    - path: /
    backend:
    serviceName: client-cluster-ip-service-dev
    servicePort: 3000
    # Dockerfile

    FROM php:7.3-fpm

    # PHP_CPPFLAGS are used by the docker-php-ext-* scripts
    ENV PHP_CPPFLAGS="$PHP_CPPFLAGS -std=c++11"

    RUN apt-get update \
    && apt-get install -y nginx \
    && apt-get install -y libpq-dev zlib1g-dev libzip-dev \
    && docker-php-ext-install pgsql zip mbstring opcache
    RUN { \
    echo 'opcache.memory_consumption=128'; \
    echo 'opcache.interned_strings_buffer=8'; \
    echo 'opcache.max_accelerated_files=4000'; \
    echo 'opcache.revalidate_freq=2'; \
    echo 'opcache.fast_shutdown=1'; \
    echo 'opcache.enable_cli=1'; \
    } > /usr/local/etc/php/conf.d/php-opocache-cfg.ini

    COPY . /usr/share/nginx/html
    COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
    COPY ./conf/default.conf /etc/nginx/conf.d/default.conf
    COPY ./conf/entrypoint.sh /etc/entrypoint.sh

    WORKDIR /usr/share/nginx/html/src

    RUN composer install
    # COPY --chown=www-data:www-data . /app/src

    RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
    RUN mv "/usr/share/nginx/html/conf/file_size.ini" "$PHP_INI_DIR/conf.d/"

    # EXPOSE 4000

    ENTRYPOINT ["sh", "/etc/entrypoint.sh"]
    # project structure

    app-root/
    admin-new/
    admin-old/
    conf/
    company.conf
    src/
    css/
    js/
    Templates/
    index.tbs
    index.php
    Dockerfile.dev
    api/
    client/
    manifests/
    # docker structure

    /app
    conf/
    company.conf
    src/
    css/
    js/
    Templates/
    index.tbs
    index.php
    Dockerfile.dev
    谢谢您的帮助。

    最佳答案

    通过将此路径移至单独的入口配置,使所有路由正常工作。可能不太理想,但是我只需要它正常工作,直到有望在6个月内将其更换。

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
    annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.org/client-max-body-size: "500m"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/configuration-snippet: |
    rewrite ^(/admin)$ $1/ permanent;
    name: ingress-service-dev-admin
    namespace: default
    spec:
    rules:
    - http:
    paths:
    - path: /admin/?(.*)
    backend:
    serviceName: admin-old-cluster-ip-service-dev
    servicePort: 4000
    ---
    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
    annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/configuration-snippet: |
    rewrite ^(/new-admin)$ $1/ permanent;
    name: ingress-service-dev
    namespace: default
    spec:
    rules:
    - http:
    paths:
    - path: /new-admin/
    backend:
    serviceName: admin-new-cluster-ip-service-dev
    servicePort: 4001
    - path: /api/
    backend:
    serviceName: api-cluster-ip-service-dev
    servicePort: 5000
    - path: /
    backend:
    serviceName: client-cluster-ip-service-dev
    servicePort: 3000

    关于php - nginx不为ingress-nginx后面的PHP应用提供JS,CSS文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64163992/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com