我的meteor应用程序的站点配置具有如下所示的指令:
server {
listen 443;
server_name XXX;
ssl on;
ssl_certificate XXX;
ssl_certificate_key XXX;
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Real-IP $remote_addr; # http://wiki.nginx.org/HttpProxyModule
proxy_http_version 1.1; # recommended for keep-alive connections per http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得我应该告诉nginx提供内容static_cacheable
和设置expires
标题max
.我到底该怎么做?我还应该在这里添加其他东西吗?
Dav*_*don 26
虽然我不是nginx专家,但我觉得我现在对如何做到这一点有了更好的理解.当我想出更多时,我会更新这个答案.
我原来问题的一个可能解决方案是:
location ~* "^/[a-z0-9]{40}\.(css|js)$" {
root /home/ubuntu/app/bundle/programs/web.browser;
access_log off;
expires max;
}
Run Code Online (Sandbox Code Playgroud)
其中说明:此站点的任何URL包含斜杠,后跟40个字母数字字符+ .js或.css,可在web.browser
目录中找到.静态服务这些文件,不要将它们写入访问日志,并告诉客户端它们可以永久缓存.
因为主css和js文件是在每个bundle操作之后唯一命名的,所以这应该是安全的.
我将在这里保留这个例子的完整版本.另外值得一提的是,我使用的是最近Nginx的构建作为谈到支持WebSockets的位置.
最后,不要忘记在你的nginx配置中完全启用gzip.我的gzip部分看起来像:
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
Run Code Online (Sandbox Code Playgroud)
完成所有这些后,我能够在pagespeed上得到一个不错的分数.
2014年9月17日更新:
更新了meteor 0.9.2.1的路径
我对另一个答案进行了一些更新和改进.特别,
我已经摆弄了一下,并提出了以下配置.适当地编辑你的字段.
首先,压缩,大大加快了加载时间.请注意,该gzip_buffers
指令通常使用系统的内存页面大小默认自动计算:
gzip on;
gzip_disable "msie6";
gzip_min_length 1100;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
Run Code Online (Sandbox Code Playgroud)
服务器配置自己:
server {
listen 443 ssl;
server_name my.domain.com;
ssl on;
ssl_certificate /etc/ssl/nginx/certificate.crt;
ssl_certificate_key /etc/ssl/nginx/certificate.key;
access_log /var/log/nginx/localhost.ssl_access_log main;
error_log /var/log/nginx/localhost.ssl_error_log info;
# Forward to meteor server
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# copied from http://blog.kovyrin.net/2006/04/29/monitoring-nginx-with-rrdtool/
location /nginx_status {
stub_status on;
access_log off;
allow 192.168.0.0/24;
deny all;
}
}
Run Code Online (Sandbox Code Playgroud)
最后,正如Dan所提到的,您需要在Meteor中设置HTTP_FORWARDED_COUNT环境变量,以便从反向代理后面正确地获取客户端IP.
归档时间: |
|
查看次数: |
10365 次 |
最近记录: |