在同一域名nginx中创建来自MEANJS应用程序的Wordpress博客链接

时间:2015-05-17 07:41:28

标签: node.js wordpress apache nginx mean-stack

我在端口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

以下是我所做的事情:

  1. 设置我的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;    }  }

  2. 将我的Apache指向8080到/ var / www / htdocs的wordpress的根文件夹

  3. 在我的MEAN app链接博客中,目标= _self
    [注意:还尝试过ng-click =" $ event.stopPropagation()"和window.location =' / blog'在ng-click]

  4. 现在我不断被重定向到/ blog#!/并在我的应用程序本身内发出404错误。作为我的第一个MEAN应用程序,我对此有点新意,所以如果答案很明显,请耐心等待,因为我没有看到它。

    编辑:显然我没有正确设置Apache,因为当我尝试从外面访问myip:8080时无法访问8080端口的任何内容

    编辑2:所以现在我可以在82端口成功访问博客,并设置了我的wordpress网站。现在nginx没有检测到url mydomain.com/blog,因为它没有重定向它并且Node继续通过url给出404错误来处理,但是如果我输入mydomain.com:82它会带我到那里,然后更改为ip :82格式点击任何东西。 :((这真的让我起了墙)

1 个答案:

答案 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文件。 非常有帮助的链接:

https://www.binarylane.com.au/support/solutions/articles/1000017339-installing-wordpress-on-debian-ubuntu

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

希望这有助于某人!!