第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

當(dāng) NGINX 無(wú)法訪問(wèn)應(yīng)用程序文件時(shí)的 NGINX 配置,以及 php-fpm 和 docker

當(dāng) NGINX 無(wú)法訪問(wèn)應(yīng)用程序文件時(shí)的 NGINX 配置,以及 php-fpm 和 docker

PHP
互換的青春 2023-05-12 14:29:05
所以我的 docker 設(shè)置如下:我有一個(gè)接受 HTTP 請(qǐng)求的 Nginx 容器,還有另一個(gè)容器(我的自定義容器),其中有 php-fpm 和我的應(yīng)用程序代碼。應(yīng)用程序代碼不在主機(jī)上,只在 Web 容器中。我想將 Nginx 配置為代理,以獲取請(qǐng)求并將它們路由到 php-fpm。我的 nginx confiration 如下(我刪除了一些在這里不重要的部分):upstream phpserver {    server web:9000;}server {    listen 443 ssl http2;    server_name app;    root /app/web;    ssl_certificate       /ssl.crt;    ssl_certificate_key  /ssl.key;    location ~ ^/index\.php(/|$) {        fastcgi_pass phpserver;        fastcgi_split_path_info ^(.+\.php)(/.*)$;        include fastcgi_params;        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;        fastcgi_param DOCUMENT_ROOT $realpath_root;        fastcgi_read_timeout 160;        internal;        http2_push_preload on;    }}還有我的 docker 配置(同樣,我刪除了一些不重要的部分)nginx:  ports:  - 443:443/tcp  - 80:80/tcp  image: nginx  links:  - web:webweb:  image: custom_image  container_name: web使用此配置,我得到以下 Nginx 錯(cuò)誤:“open() “/app/web”失?。?:沒(méi)有此類文件或目錄)”,因?yàn)?Nginx 無(wú)權(quán)訪問(wèn)該文件夾(該文件夾位于 Web 容器中) php-fpm 是)。有沒(méi)有一種方法可以配置 Nginx 來(lái)路由 HTTP 請(qǐng)求,即使它無(wú)權(quán)訪問(wèn)應(yīng)用程序代碼?我知道解決這個(gè)問(wèn)題的方法之一是將應(yīng)用程序代碼掛載到 Nginx 容器,但我想盡可能避免這種情況。這樣做的原因是在 swarm 模式下,如果兩個(gè)容器不共享主機(jī),那將無(wú)法工作。
查看完整描述

1 回答

?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

我設(shè)法解決了這個(gè)問(wèn)題,所以我在下面為有類似問(wèn)題的人發(fā)布我自己的解決方案。


解決方案是在 nginx 配置中使用 'alias' 指令而不使用 'root' 指令(我已經(jīng)刪除了一些在這里不重要的部分):


upstream phpserver {

  server web:9000;

}


server {

    listen 443 http2;

    ssl on;

    server_name app;


    ssl_certificate       /ssl.crt;

    ssl_certificate_key  /ssl.key;


    location ~ ^/index\.php(/|$) {

        alias /app/web;


        fastcgi_pass phpserver;

        fastcgi_split_path_info ^(.+\.php)(/.*)$;

        fastcgi_index index.php;

        include fastcgi_params;


        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name$fastcgi_script_name;

        fastcgi_param SCRIPT_NAME $fastcgi_script_name;


        internal;

        http2_push_preload on;

    }

}

現(xiàn)在請(qǐng)求已正確路由到端口 9000 上的 phpserver,并由 php fpm 在那里處理。Php fpm 通過(guò)查看“別名”指令知道要執(zhí)行哪個(gè)腳本。


現(xiàn)在的問(wèn)題是如何提供靜態(tài)文件。一種解決方案是也通過(guò) php fpm 為它們提供服務(wù),但根據(jù)我在網(wǎng)上閱讀的內(nèi)容,不推薦這樣做,因?yàn)殚_(kāi)銷會(huì)更大。所以我的解決方案是與 nginx docker 容器共享所有靜態(tài)文件,以便 ngnix 可以訪問(wèn)它們并可以直接為它們提供服務(wù)。如果有人對(duì)如何在這種情況下提供靜態(tài)文件有更好的解決方案,請(qǐng)告訴我。


# Cache Control for Static Files

location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {

    #access_log        on;

    #log_not_found     off;

    expires           360d;

}


查看完整回答
反對(duì) 回復(fù) 2023-05-12
  • 1 回答
  • 0 關(guān)注
  • 186 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)