Какова ситуация?
- 2 веб-сайта: A и B (laravel5.2)
- A хотите использовать B s
javascript
file
- B использует
opcache
- B с использованием
git
кодов обновления и post-hook
указанный запрос URL
сброс opcache
код веб-сайта A:
<script src="https://B/controller/getJsFunction"></script>
код сайта B:
public function getJsFunction()
{
header('Content-Type:application/javascript');
header('Cache-Control: max-age=0, must-revalidate');
//mix('/js/visitor.js') will get visitor.js and auto add the current version
echo file_get_contents(rtrim(public_path(), '/') . mix('/js/visitor.js'));
}
Что я хочу?
- веб-сайт A получить веб-сайт B
javascript
содержимое файла
- B может обновить номер версии файла
javascript
в любое время, visitor.v1.js
=> visitor.v2.js
Что случилось?
B устойчивый возврат 502
HTTP
код состояния после периода успешной работы,
Когда B Модифицирует любой триггер кода opcache_reset()
, даже просто добавляя комментарии, bug
исправит некоторое время.
Что у меня есть?
nginx
log
2018/05/06 03:56:17 [error] 12747#0: *28155344 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: xxxxxxx, server: xxxxxxx.com, request: "GET /stateless/visitor/js HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "xxxxxx.com", referrer: "https://xxxxxx"
git
пост-получение
cd /path/to/site-B/project
unset GIT_DIR
git pull origin master && curl https://site-B.com/cache.php
cache.php
<?php
opcache_reset();
nginx.conf
user nginx nginx;
worker_processes auto;
error_log /var/log/nginx/error.log error;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
include /etc/nginx/black.ip;
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 600;
fastcgi_read_timeout 600;
types_hash_max_size 2048;
client_max_body_size 20m;
gzip on;
index index.html index.htm index.php;
server {
listen 80 default;
server_name _;
return 403;
}
server {
listen 80;
listen 443;
server_name site-b.com;
root /path/to/site-b.com/public;
ssl on;
ssl_certificate /path/to/site-b.com.crt;
ssl_certificate_key /path/to/site-b.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
if ($scheme = http ) {
rewrite ^(.*)$ https://$host$1 permanent;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~* \.(jpg|jpeg|png|gif|js|css|ico|eot|svg|ttf|woff|woff2)$
{
expires max;
add_header Cache-Control public;
add_header Pragma public;
add_header Vary Accept-Encoding;
}
location ~* \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
Какая помощь мне нужна?
- Как ДЕЙСТВИТЕЛЬНО исправить ошибку?
- Или какие еще методы я должен использовать?
- Или почему
reset_opcache()
может исправить ошибку? Или почему opcache
вызывает эту ошибку?
Поскольку это онлайн-проект, я временно изменил его на этот сайт A первый запрос сайт B , чтобы получить текущую версию файла javascript
, и затем вставьте тег script
и установите src
url из ответа первого шага