我正在尝试在GoDaddy VPS托管上部署Node js应用程序。
我已将所有文件上传到服务器,并使用pm2
启动服务器
跟随This Tutorial
我的服务器正在端口 3021
上运行,我想在端口 80
上运行
用于特定域。
我已经完成了本教程中的pm2
的所有步骤,但是从Nginx部分开始,我不知道下一步要做什么。
我已经安装了Nginx,然后运行此命令sudo vi /etc/nginx/sites-available/default
并添加配置,保存时会显示错误[ Error writing /etc/nginx/sites-available/default: No such file or directory ]
我正在服务器上运行apache。可以使用apache做同样的事情吗?
修改
这是我的Nginx配置::
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
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 /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
}
答案 0 :(得分:0)
尝试使用/etc/nginx/conf.d/default.conf
而非/etc/nginx/sites-available/default
添加您的配置。根据您的配置,它应该是配置服务器的正确路径。
如果要使用/etc/nginx/sites-available/default
,应将include /etc/nginx/sites-available/*;
添加到nginx.conf中。
http {
...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-available/*;
}
答案 1 :(得分:0)
因此,如果您正在运行pm2
,那么您就已经完成了一半:)关于nginx conf。该命令:sudo vi /etc/nginx/sites-available/default
可能不起作用,因为sites-available
目录不存在。请记住,nginx不需要sites-available
和sites-enabled
。将每个服务器配置放在单独的文件中只是一个好习惯。但是如果没有它们,nginx也可以工作。如果您不打算添加更多服务器,只需使用/etc/nginx/nginx.conf
文件来配置服务器。您需要做的是创建一个具有所需配置的新服务器块,例如:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name yourapp.com www.yourapp.com;
root /var/www/html; # <- for you it can be any other dir
index index.html index.htm # <- or any other file which is your main file
# You want to proxy_pass the traffic on any route to your internal app
location ~ /(.*) { # ~ means that you are using regex
proxy_pass http://localhost:3021/$1$is_args$args; # <- proxy_pass to your internal app
proxy_redirect off;
proxy_read_timeout 60s;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
}
只需将以上配置放入/etc/nginx/nginx.conf
块内的http
中即可。
现在检查您的nginx配置:
nginx -t
如果成功,则您的nginx配置已完成。
还没有结束。还有一件事-在防火墙中打开端口80,如下所示:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
您可以检查它是否打开:
firewall-cmd --list-ports
在http://yourapp.com/
上打开浏览器,然后查看它是否有效。
记住要密切注意nginx和应用程序的日志:
tail -f /var/logs/nginx/access.log # or error.log to see nginx access/error log
pm2 logs # to see your app logs
希望有帮助。遇到更多问题,请随时共享更多信息