2017-11-11 5 views
-5

私は最も奇妙な技術問題を抱えています。私のサイトは正常に動作していますが、生産現場では正常に動作していましたが、最後のビルドでは静的な資産の認識を停止してしまい、ファビコンの古いバージョンをそのバーゲンに提供しています。私はレポ全体を再クローン化しようとしましたが、まったく同じ問題が発生しています。古いファビコンはもはやレポには存在しません。ブランチ(フェニックスフレームワーク)でコンパイルされた静的資産はサーバーに表示されません

私は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を使用してみてください。

答えて

-2

ソース(少なくとも私のメインサーバーでは、別の同じエラーを引き起こす別の問題が発生していたようですが、これは奇妙ですが、mehです)問題の原因は何とかSSL証明書で間違っていましたその結果、一部のコンテンツ(?)だけにアクセスがブロックされました。

すべてのnginx設定をクリアし、すべてのcertbot SSL設定を削除し、Cloudflareのサイトに署名し、代わりにSSLサービスを有効にしました。これで問題は解決しました。

関連する問題