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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Docker + Apache + PHP-FPM 靜態(tài)內(nèi)容

Docker + Apache + PHP-FPM 靜態(tài)內(nèi)容

PHP
縹緲止盈 2021-11-05 16:08:32
我正在使用 Slim/Twig 將 PHP 中的一些站點移動到 docker 容器。在舊服務(wù)器中,一個請求傳入纖薄路由,請求發(fā)送回 html,然后瀏覽器調(diào)用以獲取 apache 接管的資源 CSS、圖像等。轉(zhuǎn)移到 Docker,httpd conf 本質(zhì)上是這樣的:ProxyPassMatch "^/(.*\.php\/(.*)?)$" "fcgi://php:9000/var/www/html/public/index.php/$2"仍在解決所有這些問題,但這基本上轉(zhuǎn)發(fā)了一個像http://192.168.33.20:8080/index.php/adminto這樣的請求fcgi://php:9000/var/www/html/public/index.php/$2,Slim 選擇了路徑的所有其余部分,admin并返回了由 twig 呈現(xiàn)的正確視圖。我遇到的問題是資源。我通過composer在php應(yīng)用程序中擁有大部分css和前端框架。因此瀏覽器再次調(diào)用:/index.php/vendor/twbs/bootstrap/dist/js/bootstrap.bundle.js HTTP/1.1" 404得到一個是404因為 Slim 不知道這個路徑是什么,而 apache 只是轉(zhuǎn)發(fā)。我看過什么和缺點:將資源放在 Apache 上,但這基本上像服務(wù)器一樣將 Apache 和 php 結(jié)合起來。創(chuàng)建一個容器來處理這些文件,即另一個非負載均衡器 Apache 來處理這些請求。這仍然是耦合的,也意味著我需要找到一種方法來潛在地在藍綠色部署中存儲多個版本。將一個卷掛載到 Apache lb。不知道為什么我放棄了這個。應(yīng)該是版本問題。創(chuàng)建一個可以搜索資源的路由。到目前為止,我最喜歡的想法是增加了代碼復(fù)雜性。所以我的問題是在 Docker 中有一種標(biāo)準(zhǔn)的方法來處理這個問題嗎?
查看完整描述

1 回答

?
一只名叫tom的貓

TA貢獻1906條經(jīng)驗 獲得超3個贊

我的標(biāo)準(zhǔn)做法是通過框架路由控制資源訪問。一個示例實現(xiàn)(在 Lumen 中):


$router->get('/asset[/{path:.*}]', 'AssetController@load');

示例請求和響應(yīng)如下所示:


GET /asset/js/app.js HTTP/1.1

Host: localhost:8080

Connection: keep-alive

Pragma: no-cache

Cache-Control: no-cache

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36

Accept: */*

Referer: http://localhost:8080/spa/example

Accept-Encoding: gzip, deflate, br

Accept-Language: en-US,en;q=0.9


HTTP/1.1 200 OK

Server: nginx

Content-Type: application/javascript

Content-Length: 21056410

Connection: keep-alive

Last-Modified: Sun, 31 Jul 63 19:34:21 +0000

Cache-Control: private, must-revalidate

Date: Wed, 31 Jul 2019 19:34:21 GMT

Accept-Ranges: bytes

X-XSS-Protection: 1; mode=block

X-Content-Type-Options: nosniff

Content-Security-Policy: default-src  'self'; connect-src  'self'; img-src  'self'; style-src 'unsafe-inline' fonts.googleapis.com 'self'; font-src fonts.gstatic.com 'self'; script-src 'unsafe-inline'  'self' 'unsafe-eval'

您的控制器(例如,AssetController在我之前的示例中)會注意將 URL 路徑轉(zhuǎn)換為文件系統(tǒng)路徑(注意..和其他技巧,使用realpath并將其與代碼的安裝基本路徑進行比較),設(shè)置Content-Type和Content-Length標(biāo)題,任何相關(guān)的緩存標(biāo)頭,然后流式傳輸文件。


雖然這確實增加了復(fù)雜性和一定數(shù)量的開銷,但它提供了通過業(yè)務(wù)邏輯限制資源的靈活性。


如果性能是一個問題,您可以促進對 Web 服務(wù)器的訪問或屏蔽 CDN 和代理內(nèi)容后面的路由。


查看完整回答
反對 回復(fù) 2021-11-05
  • 1 回答
  • 0 關(guān)注
  • 225 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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