angualr + nginx 多site构建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angualr + nginx 多site构建相关的知识,希望对你有一定的参考价值。
参考技术A 只有一个域名,一个端口,需要配置多个 site;比如,我有一个 http://site/dire1 这样一个域名;
nginx的配置:
那么我的网站的根目录就是
在build 我们的站点的时候需要特别注意 base href:
遇到刷新 angular url 404的问题;
最后还是 用 angular 的hash 方案比较合适;
import HashLocationStrategy, LocationStrategy from '@angular/common';
providers: [
provide:LocationStrategy,
useClass:HashLocationStrategy,
],
s x 的chrome 流浪起,有时候会block 我们的url,如果我们的url 包含如下的关键词:
https://easylist.to/easylist/easylist.txt .
,我的url 是portal 相关,竟然也被blocked:others。想着就非常s x;
现有的方案,在build的时候,指定 环境,比如env=prod/dev等,但是每次部署到不同环境都需要不一样的部署;
其实,我们更喜欢的是,由运维修改指定的配置问题见的方式; 在 java 等应用应用的比较多,或者是直接读取 consul等配置文件;
我们在 angular 中,使用 env.js 的文件,放在 index.html 同级目录下,当然也可以和 consul集成;
我们一般期待在一个 docker 里面,部署一个 进程,比如跑一个 java,我们不会让java 在后台运行;
部署nginx 的时候,如果执行 nginx,太会在后台运行,会导致docker 直接 退出;
所以,我们会用 nginx -g "dameon off" 让他在前台运行;
我们这里又使用node 跑了一个服务,也就是 一个docker 两个进程,那么有一个必须在后台,有一个在前台;
比如: 前后关系倒是无所谓:
nohup node nb-portal/app.js &
echo "finish nodejs"
nginx -g "daemon off;"
echo "finish nginx"
对docker的理解不深,debug 就变得很漫长;
第一个:
那么访问 我的 静态网站:
的地址:
http://wx1/tonglian/+++++
而代理服务又是不一样的;
我的第二个 代理设置:
最终的地址:
http://wx1/tonglian/ /kgml_eco_brain/report, 静态地址
服务的地址:
http:///kgml_eco_brain/portalApi
注意,在nginx中, location 的 /, 有很多种写法,会造成,你访问的时候,最终的地址不一样;
参考:
https://blog.csdn.net/u010509052/article/details/105455813
nginx:[emerg] 未知指令“”在 /etc/nginx/sites-enabled/example.com:3
【中文标题】nginx:[emerg] 未知指令“”在 /etc/nginx/sites-enabled/example.com:3【英文标题】:nginx: [emerg] unknown directive " " in /etc/nginx/sites-enabled/example.com:3 【发布时间】:2013-10-10 13:14:45 【问题描述】:我已关注此网站http://raspberrypihelp.net/tutorials/24-raspberry-pi-webserver 在我的 Raspberry Pi 上设置 HTTP 服务器 nginx 并尝试设置站点调用 example.com。但是当我运行sudo service nginx restart
时,它说
重启 nginx: nginx: [emerg] unknown directive "" in /etc/nginx/sites-enabled/example.com:3
这是 example.com 中的代码。
server
server_name example.com 192.168.1.88;
access_log /srv/www/example.com/logs/access.log;
error_log /srv/www/example.com/logs/error.log;
root /srv/www/example.com/public/;
location /
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
location ~ \.php$
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/example.com/public$fastcgi_script_name;
location /phpmyadmin
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$
root /usr/share/;
location /phpMyAdmin
rewrite ^/* /phpmyadmin last;
我只是按照步骤操作,但无法成功运行。
【问题讨论】:
安装的是什么版本的nginx?根据这个网站,您使用 apt-get 获得的版本存在一些问题。 virtualitblog.blogspot.nl/2013/05/… 我可以建议添加 nginx.org apt 存储库并重新安装 nginx 吗?你也可以运行:ldd /usr/sbin/nginx 并将结果发布到 gist.github.com 的某个地方吗? 我已经使用/usr/sbin/nginx -t -v
来检查我使用的是 nginx/1.2.1,当我运行 sudo apt-get install nginx
时,我已经按照 http://nginx.org/en/linux_packages.html 将其添加到 apt sources.list 中返回 nginx 已经是最新版本了。。有一件事我忘了说,我可以去http://127.0.0.1/我可以看到默认站点(/usr/share/nginx/www/index.html)。
请选择最适合您的答案。谢谢。
【参考方案1】:
我遇到了同样的问题,我从网上复制/粘贴了配置代码以及一些脏的EOL
(行尾)字符。
编辑器没有显示它们,但nginx
将它们视为指令。
刚刚删除了每个EOL
并再次添加。
【讨论】:
我遇到了同样的错误。没想到这是一开始的错误。我尝试将我的文本复制粘贴到记事本中。试图使用在线工具来清理我的文本。但是窗户一直在拧。我通过启动 Linux VM 并创建相同的文档来解决它。然后我将文件传输到 Windows 并将其用于我的脚本。有效。我无法区分linux文件和windows文件之间的区别。但它为我解决了这个问题。 所以windows中的行尾是CRLF或\r\n。使用 nginx,解析器不理解 windows CRLF,而只理解 LF (\n)。使用编辑器删除它们就可以了。【参考方案2】:听起来您在这里做了一些复制和粘贴工作。在行尾 (EOL) 捕获一些不可见的额外字符并不少见。试试这个:
通过此工具运行您的文本: http://www.textfixer.com/tools/remove-line-breaks.php
然后修复任何可能已被删除并受 cmets 影响的中断。
这对我有用。希望它对你有用。
【讨论】:
【参考方案3】:看起来 nginx 二进制文件是使用 --without-http_fastcgi_module 选项编译的。这不是默认值。尝试下载或编译不同的二进制文件。
尝试运行
nginx -V
(带大写 V)查看编译 nginx 时使用了哪些选项。
【讨论】:
不错的方法,但是如何使用必要的选项重新编译?【参考方案4】:我在 conf 文件的中间编辑了一些文本,而 nginx 在文件本身的开头开始显示此错误。我复制了文件的内容,创建了一个新文件,将内容粘贴在那里,nginx 停止显示此错误。
【讨论】:
【参考方案5】:在运行 'sudo nginx -t' 时,我遇到了与“未知指令 'index.html'”类似的错误消息问题。更正 index.html 中的 HTML 语法错误后,问题得到解决。
【讨论】:
【参考方案6】:即使你错过了一个分号,你也会遇到同样的错误。
// Missed semicolon
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock
// With semicolon
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
【讨论】:
【参考方案7】:就我而言,我在 github 中有存储配置文件 nginx.conf
。我对原始版本的代码做了wget
,因此导致了这个错误。
后来,我克隆了我的存储库并使用了克隆中的nginx.conf
文件,问题得到了解决。
【讨论】:
以上是关于angualr + nginx 多site构建的主要内容,如果未能解决你的问题,请参考以下文章
Django 使用allauth报错 RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an
nginx 失败成功启动错误 pread() "/etc/nginx/sites-enabled/sites-available" failed (21: Is a directo