私は桟橋へのプロキシとしてnginxをセットアップしようとしています。 1台のラップトップでUbuntuサーバーを実行しています。今、私は突堤をlocalhost:8080で動作させ、http://192.168.1.5:8080/my-webapp-0.1.0-standalone/
でアプリのホームページを提供します。
私はこのようにnginxを設定しました( 私はこのページからそれを適応させました ):
server {
listen 80;
server_name nomilkfor.me;
rewrite ^(.+?)/?$ http://nomilkfor.me$1 permanent;
}
server {
listen 80;
server_name www.nomilkfor.me;
root /usr/share/nginx/html;
location / {
try_files $uri @my-webapp;
}
location @my-webapp {
proxy_pass http://localhost:8080;
}
}
ホームネットワークからnginxに接続すると、nginxのウェルカム画面が表示されます。
私も$ Sudo netstat -tanpl|grep nginx
を試しました
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3264/nginx: worker
nginxがポート80でリッスンしていることがわかります。
しかし、nomilkfor.meを読み込もうとすると、「Chromeはnomilkfor.meに接続できませんでした」というエラーが表示されます。
何が悪いのですか?
[〜#〜]編集[〜#〜]
私は非常にシンプルな構成を作成しましたが、これもjettyを介してアプリの代わりにindex.html
の/usr/share/nginx/
を処理します。
server {
listen 80;
server_name nomilkfor.me;
# access_log /var/log/nginx/localhost.access.log;
location / {
proxy_pass http://127.0.0.1:8080;
}
location /html {
root /usr/share/nginx/;
}
}
編集2
Nginxは私が思うよりも別のconfファイルを使用しているようです。 confファイル/etc/nginx/sites-available/nomilkfor.me
にタイプミスを追加し(閉じ中かっこを削除しました)、$ nginx -s reload
を実行したところ、エラーなくコンパイルされ、ブラウザにnginxスプラッシュページが表示されました。どこかに別のconfファイルがありますか? nginxが使用しているconfファイルを見つける方法はありますか?
EDIT 3
Pazisコメント のようにroot
を追加しましたが、どこにあるべきか、または何をすべきか正確にはわかりません。いくつかの提案を追加しました。どちらが正しいか? /usr/share/nginx/html
は、私がindex.html
を持っている場所です。
server {
listen 80;
server_name nomilkfor.me;
# root /home/z/jetty/jetty-dist/webapps
root /usr/share/nginx/html;
location / {
proxy_pass http://127.0.0.1:8080;
}
#location /html {
# root /usr/share/nginx/;
}
}
EDIT 4
これは私のjetty confファイルです。 /home/z/jetty/jetty-dist/jetty-distribution-9.1.0.v20131115/demo-base/webapps/my-webapp.xml
にあります
<Configure class="org.Eclipse.jetty.webapp.WebAppContext">
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Required minimal context configuration : -->
<!-- + contextPath -->
<!-- + war OR resourceBase -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<Set name="contextPath">/test</Set>
<Set name="war"><Property name="jetty.webapps" default="."/>/my-webapp-0.1.0-standalone.war</Set>
次の手順を試すことができますか?
親nginxディレクトリのnginx.confファイルに、sites-availableディレクトリのデフォルトファイルを指すincludeディレクティブがあることを確認してください
別のサービス(例:jetty)にプロキシする必要がある場合は、(sites-available/defaultファイルにある)アップストリームオプションを使用して、以下で共有します。サーバーセクションからアップストリームを参照できます。
基本設定が機能するようになったら、書き換えオプションをチェックし、ホスト名に対して何かを行う必要があるかどうかを確認できます。それが役に立てば幸い。
Nginx.conf:
include /etc/nginx/sites-enabled/*;
sites-availableディレクトリ(デフォルトファイル):
upstream nomilkforme {
server 0.0.0.0:8080; ##nomilkforme running on 0.0.0.0:8080;
keepalive 500;
}
server {
listen 80;
server_name localhost;
#access_log logs/Host.access.log main;
location / {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_Host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_pass http://nomilkforme
}
また、nginx confファイルを(リロード/再起動する前に)次のように確認できます:nginx -t -c /etc/nginx/nginx.conf
pdate: nginx構成を試行したときに、Jettyが0.0.0.0:8080で実行されていたかどうかを確認できますか(おそらくnetstatを使用して確認します)。また、ブラウザ経由でURLにアクセスするときに、nginxからのアクセス/エラーログを共有できますか?