所以,我有以下文件:
var sys = require('sys');
var mustache = require('mustache');
var view = {
title: "Joe",
calc: function() {
return 2 + 4;
}
};
var template = "{{title}} spends {{calc}}";
var html = mustache.to_html(template, view);
sys.puts(html);
当我使用节点nodejs mypage.js
运行它时,我得到以下输出:
Joe spends 6
这太棒了!我现在的问题是,我将如何通过Nginx访问它?
所以,例如http://example.com/mypage.js
修改
以下是Nginx配置(注意我使用的是jsp
而不是js
,因为js
已被视为文件扩展名):
server{
listen 80 default_server;
server_name example.com;
root /usr/share/nginx/html/example.com;
location ~ \.jsp$ {
fastcgi_pass unix:/tmp/nginx.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
点击该页面会给我一个502 Bad Gateway
答案 0 :(得分:3)
我知道这不是你要求的,但这是在节点中做到这一点的最基本方法。如果要构建节点服务器,那么首选标准为express
var sys = require('sys');
var mustache = require('mustache');
function handleRequest(req, res){
var view = {
title: "Joe",
calc: function() {
return 2 + 4;
}
};
var template = "{{title}} spends {{calc}}";
var html = mustache.to_html(template, view);
res.setHeader('Content-Type', 'text/html');
res.end(html);
}
var http = require('http');
var server = http.createServer(handleRequest):
server.listen(3000, function(err){
console.log(err || 'Server listening on 3000');
})
答案 1 :(得分:1)
我很擅长将nginx配置为反向代理,但这就是我在本地计算机上执行此操作的方法。我有一些静态文件(图像,css等)我希望由nginx提供服务,因为它可以更快地执行此操作,对于所有其他GET
和POST
请求,它会将它们转发给节点
我没有完全得到你想要由nginx服务的东西,以及你想要Node做什么,但是这里有...
打开你的nginx.conf文件并尝试设置你的http
块,其中的server
块看起来像这样:
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
#if localhost doesn't work, try 127.0.0.1 !!!
server_name localhost;
location / {
#note the port number below! You'll have to enter the
#port that Node uses!! (it's usually 3000)
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
这告诉nginx将GET请求从127.0.0.1:80转发到127.0.0.1:3000。
现在,假设您有一个img
文件夹,您可以在其中存储图像,并且您希望nginx为这些文件提供服务,而不是节点(这是非常常见的情况),您需要在其中设置另一个location
块你的server
块......它看起来像这样:
location /img {
# /yourProjectLocation folder should contain the img folder-
# if not, then go down until you reach the containing subfolder:
# /yourProjectLocation/subfolder1/sub2/......./folderContainingImg;
root /yourProjectLocation;
index index.html index.htm;
}
这将处理所有GET /img/myPic.jpg
个请求,而不是将它们转发到节点。
您可能需要考虑将问题标题重新定义为更广泛的内容,以帮助人们针对类似问题进行谷歌搜索。