私は、Jetty へのプロキシとして nginx を設定しようとしています。Ubuntu サーバーを実行しているラップトップが 1 台あります。現在、Jetty を 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 ファイルを見つける方法はありますか?
編集3
に従ってパジスのコメントを追加しました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/;
}
}
編集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>
答え1
以下の手順を試していただけますか?
親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
アップデート: nginx の設定を試したときに、jetty が 0.0.0.0:8080 で実行されていたかどうかを確認できますか (netstat を使用して確認するとよいかもしれません)。また、ブラウザ経由で URL にアクセスしたときに、nginx からのアクセス/エラー ログを共有できますか?