Назад | Перейти на главную страницу

Статический контент сайта nginx nodejs - ошибка 404, но работает при прямом доступе через ip

Я пытаюсь использовать nginx на своем сайте nodejs, но у меня возникают проблемы с конфигурацией nginx. Изначально мне не удавалось отобразить мой CSS или изображения, но я исправил это, добавив:

местоположение / изображения {root PATH_TO_MY_PROJECT_IMAGES_FOLDER}

Однако у меня возникают проблемы с посещением других страниц сайта. У меня есть система входа, и когда пользователь входит на сайт, он перенаправляет их на «mydomainname.com/home», но когда это происходит, я получаю ошибку 404. В моем коде nodejs я отправляю пользователя на домашнюю страницу:

//should be logged in so show main search page
    app.get('/home', function(req, res) {
        if (req.session.user == null){
            // if user is not logged-in redirect back to login page //
            res.redirect('/');
        }   else{
            res.sendFile(path.join(__dirname + '/FrontEnd/home.html'));
        }
    });

Мой проект имеет следующую структуру:

ProjectNameFolder:
1. public
  1.1 FrontEnd
    1.1.1 login.html
    1.1.2 home.html
  1.2 Lots of other javascript files, some for front-end some for server

Если я подключаюсь напрямую к своему серверу, набирая его ip в браузере, все работает отлично, но я предполагаю, что это обход nginx.

Конфигурация Nginx:

location /css {
  root /home/adam/NodeProject/public/FrontEnd/;
}
location /images {
  root /home/adam/NodeProject/public/FrontEnd/;
}
location / {
  try_files $uri $uri/ = 404;
  proxy_pass http://localhost:8888;
  .... other proxy stuff, like setting headers
}

Извиняюсь, если это немного затянуто, я постарался внести как можно больше ясности.

Изменить - серверные блоки по запросу:

Server {
listen 80;
listen [::]:80;
server_name mydomain.com www.mydomain.com
return 301 https://$host$request_uri;
}

server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
root /home/adam/NodeProject/public/;
index index.php index.html index.jpg
server_name mydomain.com www.mydomain.com;
ssl_certifiate /home/adam/SSL/public.crt;
ssl_certificate_key /home/adam/SSL/mydomain.com.key;
        location ~ \.js {
                add_header Content-Type application/x-javascript;
        }

        location ~ \.(css|png|jpg|jpeg|gif|ico|html|woff|woff2|ttf|svg|eot|otf)$ {
                add_header "Access-Control-Allow-Origin" "*";
                expires 1M;
                access_log off;
                add_header Cache-Control "public";
        }

location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                #try_files $uri $uri/ =404;
                #try_files $uri $uri/ /FrontEnd/ =404;
                #try_files $uri
                #       /$server_name$uri
                #       /shared$uri;

                index login.html home.html;

                try_files $uri $uri/ =404;

                proxy_pass http://MY_SERVER_IP:8888;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }

        location ~ \.js {
                add_header Content-Type application/x-javascript;
        }
}