我在Nginx
中为来自同一服务器的多个
angular
应用提供服务。因此,为了让用户直接浏览到我声明的某些自定义Angular
路由,而不必通过主页(避免404页面),我将这些路由从nginx转发到每个Angular应用程序的索引。html
,我在每个位置添加了一个
try\u文件
:
server {
listen 80;
server_name website.com;
# project1
location / {
alias /home/hakim/project1/dist/;
try_files $uri /index.html;
}
# project2
location /project2/ {
alias /home/hakim/project2/dist/;
try_files $uri /index.html;
}
# project3
location /project3/ {
alias /home/hakim/project3/dist/;
try_files $uri /index.html;
}
}
此解决方案避免了在走角度路线时出现404错误,但问题是当我浏览到
/project2/
或/project3/
时,它会重定向到/project1/
。这显然不是预期的,因为我希望每个位置都转发到/project-I/索引。适当项目的html
。
尝试多语言角度应用程序AOT构建的解决方案,这些构建基本上是不同的应用程序-好的,多次使用相同的应用程序,在不同的目录中的不同捆绑包中使用不同的语言构建。
在一个域上有多个独立的应用程序通常是一种糟糕的安全做法。
然而,我相信你在这里面临的是try_files
工作方式的特殊性——根据http://nginx.org/r/try_files,
如果没有找到任何文件,则会对最后一个参数中指定的uri进行内部重定向。
实际上,这意味着如果在/索引之后有一个额外的参数。html
规范(即,基本上是任何东西),那么您的代码就会按照预期工作;但是,由于缺少任何这样的最终参数,在每种情况下都会将所有内容重定向回/
位置
,就像获取/索引一样。html HTTP/1.1
请求应该已经发出(除了它都是在nginx内部完成的)。
因此,作为一种解决方案,您可以修复内部重定向的路径,使其保持在相同的位置(例如,
/projectX/index.html
),或者不使用路径,但使最后一个参数返回错误代码(例如,=404
,只要文件始终存在,就不应触发该错误代码)。
>
例如,
try_files$uri/projectX/index。html
,,
或者,
try_files$uri/index。html=404
。
例如:
location /projectX/ {
alias /home/projectX/dist/;
try_files $uri /projectX/index.html; # last param is internal redirect
}
或:
location /projectX/ {
alias /home/projectX/dist/;
try_files $uri /index.html =404;
}
总之,请注意,
/project ectX/index.html
只能作为最后一个参数工作,而/index.html
只能作为非最终参数工作。
希望这对别人有帮助
步骤1-构建所有项目
ng build --prod --base-href /project1/
ng build --prod --base-href /project2/
ng build --prod --base-href /project3/
步骤2-配置你的nginx,注意在try_files
部分添加的更改
server {
listen 80;
server_name website.com;
# project1
location / {
alias /home/hakim/project1/dist/;
try_files $uri/ /project1/index.html;
}
# project2
location /project2/ {
alias /home/hakim/project2/dist/;
try_files $uri/ /project2/index.html;
}
# project3
location /project3/ {
alias /home/hakim/project3/dist/;
try_files $uri/ /project3/index.html;
}
}
步骤3-重新加载nginx配置
sudo service nginx reload
当我需要App1的说明时,我的服务器用键1调用google api,当我需要App2的说明时,我的服务器用键2调用google api,当我需要App3的说明时,我的服务器用键3调用google api 所以我的服务器就像一个API网格一样工作。这违反谷歌条款吗?我担心他们会查看服务器的ip地址,看到有3个密钥使用,并假设我对相同的应用程序使用不同的密钥,这是被禁止的。
我有以下文件夹结构为我的应用程序 这是我的nginx.conf 这就是我一直犯的错误 页面显示正确,我只是可以在子文件夹中到达api资源。你能帮我找出我做错了什么吗?如果您需要任何额外的信息,请让我知道,我会提供 非常感谢。
我需要一个关于如何使用Google-guice为服务的多个实现编写代码的建议。下面是示例 因为Guice不允许将一个类型绑定到多个实现,因为下面的代码会导致错误 我们可以用下面的命名注释来解决这个问题 但我工作的应用程序是这样的。我们在init()方法中绑定所有模块并创建注入器模块: 但是通过上述过程,我可以将一个实现类绑定到接口(服务类) 你能给我提供一个方法来与供应商合作吗。我想在下面这样做
多个同步服务器 Since you have full control of express instance lifecycle, it's not a problem to create a few multiple simultaneous servers (e.g. both HTTP & HTTPS). Example: 因为你已经可以完全控制express实例的生命周期了,所以创建多个
什么是 SSL? SSL(安全套接层,Secure Sockets Layer),及其继任者 TLS (传输层安全,Transport Layer Security)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 会在传输层对网络连接进行加密。 通过 SSL 加密,网站与用户之间的数据交互会更加安全,能够避免大多数的网络窃听问题。通常在登录以及涉及交易等安全要求比较高的情况下,
简介 服务提供器是所有 Laravel 应用程序引导中心。你的应用程序以及 Laravel 的所有核心服务都是通过服务提供器进行引导。 在这里,我们说的「引导」其实是指 注册 ,比如注册服务容器绑定、事件监听器、中间件,甚至是路由的注册。服务提供器是配置你的应用程序的中心。 Laravel 的 config/app.php 文件中有一个 providers 数组。数组中的内容是应用程序要加载的所有