使用nginx将URL路由到目录

时间:2013-11-09 14:17:39

标签: nginx

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

  

1.2.3.4

我们也说我已经购买了这个网址:

  

www.abcd.com

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

(使用Godaddy作为注册商)

  

A(主持人)

     

主持人|要点| TTL

     

@ | 1.2.3.4 |活!

在我的浏览器的网址栏中输入 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 并将此文件提供给用户:

  

〜/公共/轨道/测试/ index.html中

简而言之:

www.abcd.com =&gt;

它有效!来自 www.abcd.com 的路由已经成功!

实际发生的事情:

www.abcd.com 由名称服务器转发至 1.2.3.4 。但是,虽然我的配置文件不起作用。它只是向用户显示nginx'“welcome”消息,就像我没有触及我的配置文件一样。

我试过

  

sudo service nginx stop

     

sudo service nginx start

  

sudo service nginx restart

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

我做错了什么?我在哪里可以找到日志以确切了解发生了什么? nginx的欢迎屏幕意味着什么?我的路径错了吗?什么?在这里飞盲。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

  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;
}