我正在macOS上开发一个RoR应用程序。
为了能够在http://localhost
上访问我的应用程序,并为了在我的测试中支持SSL,我使用nginx作为代理到Webrick端口3000,使用以下配置:
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 的请求非常快。
需要注意的是,我的应用程序正在以 dev 模式运行,我的资源(相当多)未经预编译。
除了 nginx 之外,是否还有其他选项可以轻松地在我的网络上公开我的开发网站,而且易于配置并支持 SSL?
谢谢, Ariel