我有一个NGINX配置文件,用于通过静态文件和开发服务器为网站提供服务。
静态 - > http://localhost:8080
dev webserver - > http://localhost:8080/dev
我还有其他一些服务可以绑定到不同的位置指令。
这是剪辑配置文件。
...
upstream qgis {
server qgis-spcluster_server:80;
}
...
server {
listen 8080;
server_name localhost;
location / {
root /usr/share/nginx/html/build;
index index.html index.htm;
auth_basic "Zugangskontrolle";
auth_basic_user_file /etc/nginx/.htpasswd;
}
location /dev/ {
proxy_pass http://web_app/;
auth_basic "Zugangskontrolle";
auth_basic_user_file /etc/nginx/.htpasswd;
}
location /static/ {
proxy_pass http://web_app/static/;
}
location /qgis/ {
proxy_pass http://qgis/;
}
location /apex/ {
proxy_pass http://apex/apex/;
auth_basic "off";
}
...
一切都按预期工作,直到我打开URL获取静态文件。之后,所有其他URL都会导致静态文件。
对我来说一切看起来都不错,但确实有些事情不行。
Basic_Auth会产生另一种意外行为。
所以,目前我对如何解决这个问题有点无能为力。
答案 0 :(得分:1)
请从您的位置指令中删除跟踪import React, { Component } from 'react';
import {
Text,
} from 'react-native';
export default class StartScreen extends Component {
constructor(props) {
super(props);
}
render() {
return (
<Text style={{color: '#F00'}}>TEST</Text>
);
}
}
,或在访问时提供/
。
Nginx会查找最长的前缀匹配位置。当您访问http://localhost:8080/apex时,它已被路由到/
,因为/
不是/apex/
的前缀
/apex
的文档是here
答案 1 :(得分:0)
我现在尝试了几件事,但没有真正奏效。所以我决定为所有位置指令创建第二个服务器块,这对我当前的设置有问题。
可能这不是最佳解决方案,因为我仍然不知道为什么会遇到这些问题。但它现在有效,对我来说很重要。