我在端口3000上运行一个Node应用程序,我的Nginx服务器成功地从端口80重定向到。但是在我的Node应用程序中,我有一个wordpress博客,我在端口8080使用Apache运行。我无法链接此博客的节点应用程序,并继续收到404错误。
我用过:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
以下是我所做的事情:
设置我的nginx以重定向到/ blog上的127.0.0.1:8080
服务器{
location / { proxy_pass http://127.0.0.1:3000; }
location / blog { proxy_pass http://127.0.0.1:8080; } }
将我的Apache指向8080到/ var / www / htdocs的wordpress的根文件夹
在我的MEAN app链接博客中,目标= _self
[注意:还尝试过ng-click =" $ event.stopPropagation()"和window.location =' / blog'在ng-click]
现在我不断被重定向到/ blog#!/并在我的应用程序本身内发出404错误。作为我的第一个MEAN应用程序,我对此有点新意,所以如果答案很明显,请耐心等待,因为我没有看到它。
编辑:显然我没有正确设置Apache,因为当我尝试从外面访问myip:8080时无法访问8080端口的任何内容编辑2:所以现在我可以在82端口成功访问博客,并设置了我的wordpress网站。现在nginx没有检测到url mydomain.com/blog,因为它没有重定向它并且Node继续通过url给出404错误来处理,但是如果我输入mydomain.com:82它会带我到那里,然后更改为ip :82格式点击任何东西。 :((这真的让我起了墙)
答案 0 :(得分:0)
所以我终于解决了这一个:)。这是我的解决方案,以防有人想在他们的MEAN JS应用程序中添加Wordpress博客。
我的设置是运行Nginx服务器作为主要Web服务器的Debian操作系统,因此在端口80处。我的节点应用程序设置为在端口3000运行,即使我不认为第三台服务器我需要,无论如何,我还是在82端口的Apache服务器,用于我的Wordpress博客。
在我添加博客之前,我通过在iptables中设置预先路由规则将所有流量从端口80重定向到3000
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
必须在Nginx处理任何事情之前将其删除。所以我去了我的NAT iptables,并按行号删除了这条规则。我做了以下
iptables -L -t nat –line-numbers
查看我的预先路由规则列表并获取正确的行号,然后使用
将其删除iptables -t nat -D PREROUTING MYRULELINENUMBER
在此之后,我通过在etc / nginx / sites-available /
中的sites-available文件夹中添加文件example.com来设置我的nginx服务器。upstream app_node{
server 127.0.0.1:3000;
keepalive 8;
}
server{
listen 0.0.0.0:80;
server_name example.com;
access_log /path/to/log;
location / {
proxy_pass http://app_node;
//Other lines here do a basic Nginx setup search you can find them all
}
location /blog{
proxy_pass http://127.0.0.1:82;
}
在此之后,我将此文件链接到我的nginx / sites-enabled以使其正常运行
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
现在我的nginx全部设置完毕,继续我的博客。我首先在var / www / myblog /中安装了Wordpress,然后转到我的etc / apache2 / sites-available文件夹
如果你不知道如何在debian上安装Wordpress,请看这篇文章的结尾,我附上了我用过的所有链接
我在apache2 / sites-available中的example.com文件
<VirtualHost *:82>
ServerName example.com
DocumentRoot /var/www/myblog
Alias /blog /var/www/myblog
<Directory /var/www/myblog>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
我建议在网站上复制默认值并为您自己的域自定义。
最后在我的角度文件中,我将博客与简单的
相关联<a href="http://example.com/blog" target="_self">BLOG</a>
Nginx将点击此链接将您发送到Apache,您通过访问mydomain.com/blog/wp-admin设置您的博客,确保您的SiteUrl和Wordpress Url设置正确,我个人花了太长时间修复此问题因为我搞砸了
如果您遇到任何麻烦,请尝试运行
wget example.com/blog
它将准确显示nginx服务器收到请求时发生的情况。我在我的nginx服务器文件中进行了重写,导致301错误,因此请确保在启用站点的情况下可以使用正确的examples.com文件。 非常有帮助的链接:
http://lubos.rendek.org/remove-all-iptables-prerouting-nat-rules http://nginx.org/en/docs/http/ngx_http_proxy_module.html https://askubuntu.com/questions/162866/correct-permissions-for-var-www-and-wordpress https://www.linode.com/docs/websites/nginx/basic-nginx-configuration http://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/ http://httpd.apache.org/docs/1.3/urlmapping.html
希望这有助于某人!!