0

我的内容如下nginx.conf,其他一切都原样

server {
    listen       8081;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    #location / {
        #root   html;
        #index  index.html index.htm;
    #}

    location = /console {
        proxy_pass http://localhost:7001/main/console;
        proxy_set_header        Host             $host;
        proxy_set_header        X-Real-IP        $remote_addr;
        proxy_set_header        X-Forwarded-For  $proxy_add_x_forwarded_for;
        auth_basic "Admin Area";
        auth_basic_user_file /etc/apache2/.htpasswd;
    }
}

现在,当我启动http://localhost:8081/console它时,它会成功启动网页,甚至要求我输入密码。

但是这个位置有一些静态内容/main/resources/org/nett/main/images/jquery-3.1.1.min.js

当我单击它时,它会抛出404. 我应该在我的文件夹nginx.conf中提供什么静态内容?/main/resources/org/nett/main/images/

4

1 回答 1

1

您会注意到静态内容的位置/main/resources...与您的任何位置都不匹配。. resources不在 下/main/console,因此无法在您现有的proxy-pass位置下访问它。

重新考虑是否需要更改代理的路径。它可以完成,但需要额外的配置。如果您只是重定向/7001:/,那么当 处的数据/main/console引用 时/main/resources,那也将具有通过 nginx 的有效代理路径。

如果您对“工作”的定义是指/console映射到7001/main/console,那么您将不得不扩展该定义以解决您希望如何映射下的请求/main/<anythingelse>,其中可能还有更多尚未被发现。您还必须处理重写应用程序发回的对自身的引用(例如,如果从 请求更多/main/console,它将与下的东西有相同的问题/main/resources,因为它也不匹配/console。代理只能在对正则表达式和 http 有很好的掌握的情况下进行,并且只有对 RTFM 有真诚和实践的意愿。它很复杂。

顺便说一句,如果您尝试将基本身份验证添加到任何内容7001,请确保还加密您的连接(HTTPS),否则您的凭据在网络上是明文(http://mark-kirby.co.uk/2013 /how-to-authenticate-apis-http-basic-vs-http-digest/)。

于 2017-12-05T02:02:44.110 回答