设置服务器块后,Nginx 不为我的域名提供服务
After setting up server blocks, Nginx is not serving my domain name
我正在将我的 MERN 应用程序部署到 Digital Ocean droplet(Ubuntu 20.04 服务器)。
我按照以下教程中的步骤安装了Nginx。 [我已经完成前面的所有步骤]
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04
当我访问 http://134.122.112.22
时,我看到了预期的 Nginx 登录页面。
但是,在设置服务器块后,当我访问 http://sundaray.io
时,出现以下错误。
sundaray.io
是我的域名。
当我 运行 命令 /var/log/nginx/error.log
时,我看到以下内容:
如何修复错误?
EDIT-1
服务器阻塞
为了创建服务器块,我按顺序执行了以下命令:
mkdir -p /var/www/sundaray.io/html
nano /etc/nginx/sites-available/sundaray.io
然后,我粘贴了以下配置块。
server {
listen 80;
listen [::]:80;
root /var/www/sundaray.io/html;
index index.html index.htm index.nginx-debian.html;
server_name sundaray.io www.sundaray.io;
location / {
try_files $uri $uri/ =404;
}
}
错误
执行命令 cat /var/log/nginx/error.log
得到以下结果:
EDIT-2
执行chown -R nginx:nginx /var/www/sundaray.io/html
抛出以下错误:
EDIT-3
执行ps -elf |grep nginx
得到以下结果:
EDIT-4
当我执行命令 ls /var/www/sundaray.io/html
时,我得到了以下结果:
1。 chmod 777
从来都不是一个好主意。
NGINX 在运行用户下运行。如何查看运行用户:
ps -elf |grep nginx
。通常它将是 nginx
。而不是 777
(对所有人开放)做 chmod -R 755 /path/to/folder
和 chown -R nginx:nginx /path/to/folder
但同意。可以使用它进行故障排除。但是回到你的问题。
2。目录列表已禁用。
错误告诉你nginx 不能列出目录内容。这是默认行为。确保
root /var/www/sundaray.io/html;
这条路径存在并且
index index.html index.htm index.nginx-debian.html;
找到了其中一个文件!
没有这些文件中的任何一个,NGINX 都无法加载 /
上的默认索引文件。在 /var/www/sundaray.io/html
中放一些东西,比如
printf "<html>\n<body>\n<h1>Hello from NGINX</h1>\n</body>\n</html>" > /var/www/sundaray.io/html/index.html && chown nginx:nginx /var/www/sundaray.io/html/index.html
。这应该会为您生成一个 index.html。
如果您只想在没有任何文件的情况下测试您的服务器配置:
location / {
return 200 "Hello on $host$uri\n";
}
我正在将我的 MERN 应用程序部署到 Digital Ocean droplet(Ubuntu 20.04 服务器)。
我按照以下教程中的步骤安装了Nginx。 [我已经完成前面的所有步骤]
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04
当我访问 http://134.122.112.22
时,我看到了预期的 Nginx 登录页面。
但是,在设置服务器块后,当我访问 http://sundaray.io
时,出现以下错误。
sundaray.io
是我的域名。
当我 运行 命令 /var/log/nginx/error.log
时,我看到以下内容:
如何修复错误?
EDIT-1
服务器阻塞 为了创建服务器块,我按顺序执行了以下命令:
mkdir -p /var/www/sundaray.io/html
nano /etc/nginx/sites-available/sundaray.io
然后,我粘贴了以下配置块。
server {
listen 80;
listen [::]:80;
root /var/www/sundaray.io/html;
index index.html index.htm index.nginx-debian.html;
server_name sundaray.io www.sundaray.io;
location / {
try_files $uri $uri/ =404;
}
}
错误
执行命令 cat /var/log/nginx/error.log
得到以下结果:
EDIT-2
执行chown -R nginx:nginx /var/www/sundaray.io/html
抛出以下错误:
EDIT-3
执行ps -elf |grep nginx
得到以下结果:
EDIT-4
当我执行命令 ls /var/www/sundaray.io/html
时,我得到了以下结果:
1。 chmod 777
从来都不是一个好主意。
NGINX 在运行用户下运行。如何查看运行用户:
ps -elf |grep nginx
。通常它将是 nginx
。而不是 777
(对所有人开放)做 chmod -R 755 /path/to/folder
和 chown -R nginx:nginx /path/to/folder
但同意。可以使用它进行故障排除。但是回到你的问题。
2。目录列表已禁用。
错误告诉你nginx 不能列出目录内容。这是默认行为。确保
root /var/www/sundaray.io/html;
这条路径存在并且
index index.html index.htm index.nginx-debian.html;
找到了其中一个文件!
没有这些文件中的任何一个,NGINX 都无法加载 /
上的默认索引文件。在 /var/www/sundaray.io/html
中放一些东西,比如
printf "<html>\n<body>\n<h1>Hello from NGINX</h1>\n</body>\n</html>" > /var/www/sundaray.io/html/index.html && chown nginx:nginx /var/www/sundaray.io/html/index.html
。这应该会为您生成一个 index.html。
如果您只想在没有任何文件的情况下测试您的服务器配置:
location / {
return 200 "Hello on $host$uri\n";
}