2016-12-06 3 views
-1

Я пытаюсь узнать о Node.js, и я написал простой Node.js page с помощью express и ejs, следуя руководству на Lynda.com. У меня есть страница, размещенная на сервере Amazon AWS, и установлен Nginx. Я могу получить доступ к странице на IP: 3000, когда я запускаю приложение узла. Я также создал Nginx, следуя нескольким различным руководствам для перенаправления серверов IP/на порт 3000. Однако, когда я пытаюсь получить доступ к странице на IP/ни один из изображений или CSS не появляется.Хостинг статической страницы Node.js

В прошлом я создал несколько веб-страниц для школы, используя Ruby on Rails, и я предполагаю, что это проблема разработки или производства. Большинство руководств/инструкций, которые я нахожу, просто показывают настройку Nginx для простого приложения hello world без каких-либо изображений или CSS. Может ли кто-нибудь направить меня на правильный ресурс, чтобы выполнить то, что я пытаюсь сделать здесь?

Edit: Вот мои app.js и мои два пути app.js

var express = require('express'); 
var reload = require('reload'); 
var app = express(); 
var clientFile = require('./data/clients.json'); 
var instructionFile = require('./data/instructions.json'); 

app.set('port', process.env.PORT || 3000); 
app.set('clientData', clientFile); 
app.set('instructionData', instructionFile); 
app.set('view engine', 'ejs'); 
app.set('views', './views'); 

app.locals.siteTitle = 'Roux Meetups'; 

app.use(express.static('./public')); 
app.use(require('./routes/index')); 
app.use(require('./routes/instructions')); 

var server = app.listen(app.get('port'), function() { 
    console.log('Listening on port ' + app.get('port')); 
}); 

reload(server, app); 

var express = require('express'); 
var router = express.Router(); 

маршрут 1

router.get('/', function(req, res) { 
    var clients = req.app.get('clientData'); 
    var clientPhotos = clients.images; 
    var clientAddresses = clients.sites; 

    res.render('index', { 
    pageTitle: 'Home', 
    clients: clientPhotos, 
    sites: clientAddresses, 
    pageID: 'home' 
    }); 
}); 

module.exports = router; 

маршрут 2

var express = require('express'); 
var router = express.Router(); 

router.get('/instructions', function(req, res) { 
    var clients = req.app.get('clientData'); 
    var clientPhotos = clients.images; 
    var clientAddresses = clients.sites; 

    var instructions = req.app.get('instructionData'); 
    var instructPhotos = instructions.images; 

    res.render('instructions', { 
    pageTitle: 'Instructions', 
    clients: clientPhotos, 
    sites: clientAddresses, 
    instructs: instructPhotos, 
    pageID: 'instructions' 
    }); 
}); 

module.exports = router; 

я только отредактированный my/etc/nginx/sites-available/default для nginx со следующими

server { 
listen 80 default_server; 
listen[::]:80 default_server; 

root /var/www/html; 

index index.html index.html index.nginx-devian.html; 

server_name _; 

location/{ 
    proxy_pass http://localhost:3000; 
    try_files $uri $uri/ = 404; 
} 
} 
+0

Вы проверили элемент в браузере? проверьте его, посмотрите местоположение фотографии css, а затем вы поймете проблему \ –

+0

или попробуйте эту конфигурацию сервера. 'upstream nodejs { server localhost: 3000; } сервер { слушать 8080; имя_сервера localhost; root ~/workspace/test/app; местоположение/{ try_files $ uri $ uri/@nodejs; } местонахождение @nodejs { proxy_redirect off; proxy_http_version 1.1; proxy_pass http: // nodejs; proxy_set_header Host $ host; proxy_set_header X-Real-IP $ remote_addr; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; } } ' –

+0

Эта конфигурация сервера для конфигурации nginx? Почему относительные объекты image/css работают нормально, если я перейду к IP /: 3000, а не когда я перейду к IP/и перенаправляю nginx на порт 3000? Я пытаюсь понять, как это все работает вместе, но мне не хватает чего-то, что кажется. – jawknee530

ответ