从同一域 nginx 中的 MEANJS 应用创建 link 到 Wordpress 博客

Create link to Wordpress blog from MEANJS app in the same domain nginx

我是 运行 端口 3000 上的 Node 应用程序,我的 Nginx 服务器已成功从端口 80 重定向到该应用程序。但是在我的 Node 应用程序中,我有一个 wordpress 博客,我正在 运行 使用端口 8080 上的 Apache。我无法 link 将应用程序节点连接到此博客,并且不断收到 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

    服务器{

    位置/{ proxy_pass http://127.0.0.1:3000; }

    位置/博客{ proxy_pass http://127.0.0.1:8080; } }

  2. 将我的 Apache 指向 8080 到 /var/www/htdocs

  3. 处的 wordpress 根文件夹
  4. 在我的 MEAN 应用 link 博客中,目标=_self
    [注意:在 ng-click 上也尝试过 ng-click="$event.stopPropagation()" 和 window.location= '/blog']

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

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

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

所以我终于解决了这个问题:)。这是我的解决方案,以防有人想将 Wordpress 博客添加到他们的 MEAN JS 应用程序中。

我的设置是 Debian OS 运行 将 Nginx 服务器作为主要 Web 服务器,因此在端口 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;
 }

在此之后,我 link 将此文件编辑到我的 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,请看这个 post 的结尾,我已经附上了我使用的所有 link

我的 example.com 文件在 apache2/sites-available

<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>

我建议在 sites-available 下复制默认值并为您自己的域自定义。

最后,在我的 angular 文件中,我 link 编辑了一个简单的博客

<a href="http://example.com/blog" target="_self">BLOG</a>

Nginx 将在单击此 link 时将您路由到 Apache,您通过访问 mydomain 来设置您的博客。com/blog/wp-admin,确保您的站点 Url 和 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

希望这对某人有所帮助!!