Mac OSX で RoR アプリケーションを開発しています。
でアプリにアクセスできるようにするhttp://localhost
ため、およびテストで SSL をサポートするために、次の構成で Webrick ポート 3000 へのプロキシとして nginx を使用します。
server {
listen 80;
server_name app.mysite.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_pass http://127.0.0.1:3000;
}
}
server {
listen 443 ssl;
server_name secure.app.mysite.com;
ssl on;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
keepalive_timeout 600;
ssl_session_timeout 10m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:3000;
### force timeouts if one of backend is died ##
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
### Set headers ####
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
### Most PHP, Python, Rails, Java App can use this header ###
proxy_set_header X-Forwarded-Proto https;
### By default we don't want to redirect it ####
proxy_redirect off;
}
}
http://localhost/
どちらかまたはサーバーでアプリケーションにアクセスするとhttps://localhost/
、サーバーはすばやく応答し、オーバーヘッドhttp://localhost:3000
は無視できます。
しかし、同じネットワーク上の別のコンピュータ (たとえば、http://10.0.1.9/
) からマシンにアクセスしようとすると、サーバーの応答が非常に遅くなるか、まったく応答しなくなります。
この場合、nginx はポート 3000 に内部リクエストを送信していないように見えますが、リクエストは確実に外部から nginx に到達しており、外部からポート 3000 へのリクエストは非常に高速です。
私のアプリは開発モードで実行されており、アセット (かなりの数) はプリコンパイルされていないことに注意してください。
nginx 以外に、構成が簡単で、SSL をサポートしている、ネットワーク上の開発サイトを簡単に公開するための別のオプションはありますか?
ありがとう、アリエル