私はさまざまなSSL構成のサンプルをGoogleで調べてみましたが、正しく設定されているようですが、2つの問題があります。
Hostヘッダーを$ http_Hostではなく$ Hostに設定しようとしましたが、proxy_redirectを設定してURLをhttpsに設定しようとしましたが、どちらも効果がありませんでした。
私のSSL構成は以下の通りです。誰かが私が間違ったことを教えてもらえますか?
server {
listen 443;
server_name dev.mysite.com;
access_log /var/log/nginx/dev_mysite_access.log;
error_log /var/log/nginx/dev_mysite_error.log;
ssl on;
ssl_certificate /export/nginx/certs/mysite.com.crt;
ssl_certificate_key /export/nginx/certs/mysite.com.key;
location / {
# give site more time to respond
proxy_read_timeout 120;
# needed to forward user's IP address
proxy_set_header X-Real-IP $remote_addr;
# needed for HTTPS
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_Host;
proxy_redirect off;
proxy_max_temp_file_size 0;
proxy_pass http://localhost:8081;
}
}
6か月以上経ちましたが、試してみましょう。 X-Forwarded-Protoヘッダーがないと思います。 nginxでの関連する仮想ホスト構成:
server jira.site.com;
...
location /jira {
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/jira;
}
たとえば上記のJIRAのように、プロキシの背後にあることをTomcatに伝える必要がある場合があります。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443"
scheme="https"
proxyName="jira.site.com"
proxyPort="443"/>
そうすれば、アプリケーションごとにいくつかのポートができてしまうかもしれませんが、問題なく動作します。
Troyengelについては、なぜ "Nginx + Tomcat"に悩むのでしょうか。まあ、nginxの方がはるかに高速であり、メモリとCPUの両方の点でほとんど何もしません。そうすれば、Tomcatなどで無駄になるリソースが増えます。 :/
最後に、Apache-AJP13-Tomcatを適切な統合と呼ぶことはもうありません。 Tomcat APRリスナーを有効にしたら:
<Listener className="org.Apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
そしてsendfile(- tcnative ライブラリを使用)では、すべてが飛んでしまいます。次に、nginxから静的コンテンツを直接提供しますが、php-fpmにプロキシすることで、お気に入りのphpサイトを実行するのに十分なパワーがあります。
まあ、それは私の経験からですが、ymmv。
私の仕事でも同様の設定があります。 nginxはSSLを終了し、生のHTTPをTomcatに返します。このアプリケーションでは複数のドメイン名を使用しています。
server.xml
に行を追加するだけで十分であることがわかりました。
scheme="https"
proxyPort="443"
tomcatもnginxも、proxyNameは不要であり、その他の変更も必要ありませんでした。