我有一个运行Ubuntu的AWS EC2实例,我想用Nginx进行配置。我的理解是,如果Nginx正在运行,并且我已经正确配置了我的服务器块,我应该能够在我的VM之外修改我的主机文件,以便从自定义域提供公共IP。
所以在我的实例中,Nginx正常运行:
~$ /etc/init.d/nginx status
* nginx is running
我的服务器块位于/etc/nginx/sites-available/example.com
(符号链接到sites-enabled
),如下所示:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/example;
index index.html index.htm;
server_name local.example.com local.www.example.com;
location / {
try_files $uri $uri/ =404;
}
var/www/example/index.html
是一个包含要显示的文本的现有目录。
根据其他Stackoverflow答案,我已将我的安全组修改为包含HTTP端口80:
当我从我的个人计算机ping AWS界面中提供的公共IP时,我收到了回复。
但是当我从实例内部运行curl -v localhost
时,我得到了
* Rebuilt URL to: localhost/
* Hostname was NOT found in DNS cache
* Trying 127.0.0.1...
* connect to 127.0.0.1 port 80 failed: Connection refused
* Failed to connect to localhost port 80: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 80: Connection refused
此外,当我像这样编辑我的主机文件时
my.public.ip local.example.com
连接超时。
为什么在编辑index.html
文件时,我无法将hosts
提供给虚拟域名?
答案 0 :(得分:3)
问题在于,为了象征性地链接文件,它需要您使用完整路径。所以当我在/etc/nginx
时,我跑了
ln -s sites-available/example.com sites-enabled/
这并没有创建一个“正确的”符号链接,并且我的Nginx失败了。我不得不跑
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
显然,您无法使用相对路径进行符号链接。它们必须是绝对的。