如何基于动态URL参数配置nginx proxy_pass?

时间:2018-10-10 04:48:35

标签: nginx parameters arguments

通常,当我使用 http://127.0.0.1/apiset/some_dynamc_string 并获得json文件时。

/ apiset / 是我的应用程序所在的目录。 “ some_dynamc_string”是一个动态请求字符串。我将nginx安装到我的ubuntu 18.04。当我运行 http://cep.myname.com 时,我的域名是cep.myname.com,我得到了默认的nginx页面。

我将 / etc / nginx / sites-available / default (我也将网站设置为启用)配置为;

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name cep.myname.com;

    location / {
         proxy_pass http://127.0.0.1:8888/;
    }
}

我收到 404 错误。我需要我的用户将“ some_dynamc_string”发送为:

http://cep.myname.com/apiset/some_dynamc_string

我需要使用proxy_pass,以便可以将“ / apiset / some_dynamc_string” 发送给我的后端,

http://127.0.0.1:8888/apiset/some_dynamc_string;

我该怎么做?如上所述,如何根据动态网址参数配置nginx proxy_pass?

When I use error_log with debug I get this:
2018/10/10 08:28:23 [error] 19170#19170: *3 open() "/usr/share/nginx/html/apiset/some_dynamc_string" failed (2: No such file or directory), client: 12.11.10.10, server: localhost, request: "GET /apiset/some_dynamc_string HTTP/1.1", host: "cep.myname.com"

我想我的问题从这里开始:在“ / usr / share / nginx / html / apiset / some_dynamc_string”中,我没有“ / apiset / some_dynamc_string”。我只有index.html默认的nginx html文件。 “ apiset / some_dynamc_string”用于我的后端服务器。

客户发送此邮件时:http://cep.myname.com/apiset/some_dynamc_string 它重定向到“ / usr / share / nginx / html / apiset / some_dynamc_string”。我需要配置为发送到“ http://127.0.0.1:8888/apiset/some_dynamc_string

1 个答案:

答案 0 :(得分:0)

好的。我找到了。我在可用的站点和启用的站点中使用default.conf。这是修改default.conf的错误位置。正确的路径是在conf.d目录中修改default.conf。

1) install nginx
2) run: 
    nginx -v  
    (nginx version: nginx/1.15.5)
3) sudo nano /etc/nginx/conf.d/default.conf

    server {
        listen 80;
            listen [::]:80;

            error_log    /var/log/nginx/your_domain_name.error.log debug;
            rewrite_log on;

            server_name your_domain_name;

            location / {
                    proxy_pass http://127.0.0.1:8888/;
        }
    }


4) sudo systemctl reload nginx
5) sudo systemctl restart nginx
6) sudo nginx -t
7) curl http://your_domain_name/