私は最も奇妙な技術問題を抱えています。私のサイトは正常に動作していますが、生産現場では正常に動作していましたが、最後のビルドでは静的な資産の認識を停止してしまい、ファビコンの古いバージョンをそのバーゲンに提供しています。私はレポ全体を再クローン化しようとしましたが、まったく同じ問題が発生しています。古いファビコンはもはやレポには存在しません。ブランチ(フェニックスフレームワーク)でコンパイルされた静的資産はサーバーに表示されません
私はnginxのは、以下の設定で、カウボーイサーバプロセスの前にリバースプロキシを持っている:
upstream phoenix {
server 127.0.0.1:4000;
}
# Default server configuration
#
server {
listen 80;
server_name haaksploits.com www.haaksploits.com;
return 301 https://$server_name$request_uri;
}
server {
# SSL configuration
listen 443 ssl http2;
listen [::]:443 ssl http2;
rewrite ^/(.*)/$ /$1 permanent;
server_name haaksploits.com wwww.haaksploits.com;
ssl_certificate /etc/letsencrypt/live/haaksploits.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/haaksploits.com/privkey.pem;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;
access_log /var/log/nginx/sub.log combined;
root /var/www/haaksploits.com/html;
# Add index.php to the list if you are using PHP
index index.html index.php index.htm;
location/{
allow all;
# Proxy Headers
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Cluster-Client-Ip $remote_addr;
# WebSockets
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://phoenix;
include /etc/nginx/mime.types;
}
location ~ /.well-known {
allow all;
}
# Enable browser caching
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}
location ~* \.(pdf)$ {
expires 10d;
}
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
}
あなたが見ることができるように、私はキャッシュが有効になっているが、私は1秒にこれを設定しようとしましたそれは助けにはならず、どんな場合でも、私は新しいfavicon をアップロードしました。問題が発生したのは、問題なしとしていたので、です。マイmix.exs:
defmodule Haaksploits.Mixfile do
use Mix.Project
def project do
[
app: :haaksploits,
version: "0.2.3",
elixir: "~> 1.4",
elixirc_paths: elixirc_paths(Mix.env),
compilers: [:phoenix, :gettext] ++ Mix.compilers,
start_permanent: Mix.env == :prod,
aliases: aliases(),
deps: deps()
]
end
def application do
[
mod: {Haaksploits.Application, []},
extra_applications: [:logger, :runtime_tools, :ueberauth, :ueberauth_google]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
{:phoenix, "~> 1.3.0"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.2"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.10"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:ueberauth_google, "~> 0.2"},
{:ja_serializer, "~> 0.11.2"},
{:guardian, "~> 0.14.2"}
]
end
defp aliases do
[
"ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
"ecto.reset": ["ecto.drop", "ecto.setup"],
"test": ["ecto.create --quiet", "ecto.migrate", "test"]
]
end
end
そして、私のprod.exs:
use Mix.Config
config :haaksploits, HaaksploitsWeb.Endpoint,
http: [port: 4000],
url: [host: "haaksploits.com", port: 80],
cache_static_manifest: "priv/static/cache_manifest.json",
server: true,
code_reloader: false
config :logger, level: :info
import_config "prod.secret.exs"
私は考えることができる唯一の他の事は蒸留所だったと言って問題が発生した前の最後のビルドでエラーがあったということです不足しているので、ビルドを完了させるためにそれを追加しました。私はDistilleryとEdeliverを削除して以来、私は現時点でそれらが本当に必要ないので、問題は解決しないものの、これがファイルに何かをしたのかどうか疑問に思っています。資産の場所。
これが本当に必要なのは、蒸留所がこれらのファイルを探している場所を知ることだけで、フェニックスを再び静的資産の正しい場所に見えるようにすることです。アクセスが何とかブロックされている場合は、ファイルへのアクセスを許可することもできます。
私が/ priv/staticを見ると、すべてのファイルはそれらの場所にあります。
更新:
私はnginxのないマシン上でテストしてみた、フェニックス/蒸留所の問題ではないようですが、nginxの設定ファイルとは何か...だから、おそらくキャッシュの問題の後にすべて........
更新:
あなたは完全に式のうち、nginxの取るとき、それはまだ失敗したとして問題ではありませんでした。また、ブランチや蒸留所のいずれかを使ってリリースをビルドすると失敗しますが、私の開発用Macではなく、2台のプロダクションサーバ(1つのDebian、1つのUbuntu)でのみ失敗します。私は自分の開発envでビルドしようとしています。次に、ビルドのtarballを手動でプロダクションenvにscpします。
更新:
tarballのソリューションは、開発マシンと本番マシン間のアーキテクチャの違いに起因する障害が発生しました。回避するためにエデリバーを使用しようとしています。
更新:プロセスは、IPアドレスから直接アクセスされたときに
が細かい動作しているようだので、私は考えることができる残された唯一の事はそれが何かは、ドメイン名解決段階の間に間違って起こっているのだし、静的資産のアクセス。 edeliverの解決策を残して、代わりにCloudflareを使用してみてください。