【问题标题】:Route a url to a directory with nginx使用 nginx 将 url 路由到目录
【发布时间】:2019-01-27 18:40:59
【问题描述】:

假设这是运行 nginx 的服务器的 ip:

1.2.3.4

假设我已经购买了这个网址:

www.abcd.com

我已经编辑了 www.abcd.com 的 DNS 记录,如下所示:

(使用 Godaddy 作为注册商)

A(主机)

主机 |指向 |生存时间

@ | 1.2.3.4 |直播!

在浏览器的 url 栏中输入 1.2.3.4 将带我进入服务器的 nginx 欢迎页面。因为我将我的网址指向同一个地址 www.abcd.com 也将我带到同一个页面,尽管它解析为 1.2.3.4。

这是我的 nginx 配置文件:

sudo nano /opt/nginx/conf/nginx.conf #=>

http {
    include       /usr/local/nginx/conf/mime.types;
    default_type  application/octet-stream;

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;

    server_names_hash_bucket_size 128;

    client_max_body_size 4M;
    client_body_buffer_size 128k;

    include /usr/local/nginx/conf/conf.d/*.conf;
    include /usr/local/nginx/conf/sites-enabled/*;

upstream appname {
  server unix:///data/apps/appname/shared/tmp/puma/appname-puma.sock;
}

server {
  listen 80;
  server_name www.abcd.com;
  root /public/rails/test;
#  keepalive_timeout 5;
}
}

在我的服务器上,我的结构如下:

~/public/rails/test/index.html

这是 index.html 包含的内容:

sudo nano /opt/nginx/conf/nginx.conf #=>

<h1> It works! Routing from <i>www.abcd.com</i> has been successful! </h1>

我预计会发生什么:

访问 www.abcd.com 将被名称服务器转发到 1.2.3.4。当请求到达 1.2.3.4 时,nginx 会看到它来自 www.abcd 并将此文件提供给用户:

~/public/rails/test/index.html

简而言之:

www.abcd.com =>

有效! www.abcd.com 的路由已成功!

实际发生的情况:

访问 www.abcd.com 被名称服务器转发到 1.2.3.4。但是,尽管我的配置文件不起作用。它只是向用户显示 nginx 的“欢迎”消息,就好像我没有碰过我的配置文件一样。

我试过了

sudo 服务 nginx 停止

sudo 服务 nginx 启动

和

sudo 服务 nginx 重启

在编辑配置后,但没有任何反应。

我做错了什么?我在哪里可以找到日志以查看到底发生了什么? nginx 的欢迎屏幕是什么意思?我的路径错了吗?什么?在这里瞎飞。

【问题讨论】:

    标签: nginx


    【解决方案1】:

    您的服务器阻止根指令设置为 /public/rails/test(绝对路径),而您说您希望它服务于 ~/public/rails/test/index。 html 给用户。 ~字符表示当前用户的家目录,是一个相对路径。

    因此:尝试在服务器块中设置绝对路径(例如 /home/myuser/public/rails/test)。

    【讨论】:

      【解决方案2】:
      1. 添加server_name 有和没有www
      2. 添加此行index index.html;
      3. 在/public/rails/test 之前添加~ 符号。喜欢:root ~/public/rails/test;

      试试这个:

      server {
        listen 80;
        server_name abcd.com www.abcd.com;
        index index.html; # add this line
        root ~/public/rails/test; # add "~" sign '/public/rails/test'
        server_name www.abcd.com;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-30
        • 2016-04-16
        • 1970-01-01
        • 2021-04-11
        相关资源
        最近更新 更多