Nginx和apache2在同一台服务器上

学生Michal Wloga

我有使用nginx和apache2的ubuntu 16.04。指向此计算机的DNS A记录有2条:

  • app1.mydomain.com
  • app2.mydomain.com

我需要由Apache解析的app1.mydomain.com和由nginx解析的app2.mydomain.com。两者都在端口80上。有可能吗?

此外,Apache需要处理2个不同的应用程序(site1和site2)。

我想:

  • app1.mydomain.com/site1-由apache解析并运行应用程序site1
  • app1.mydomain.com/site2-由apache和fire应用程序site2解析
  • app2.mydomain.com-使用Nginx提供幽灵应用程序

这是我的Apache配置:

<VirtualHost *:80>
    ServerAdmin [email protected]

    ServerName app1.mydomain.com

    ServerAlias www.app1.mydomain.com

    ErrorLog /var/www/site1/logs/error.log

    CustomLog /var/www/site1/logs/access.log combined

    WSGIScriptAlias /api /var/www/site1/application/index.py/

    Alias /static /var/www/site1/application/static

    <Directory /var/www/site1/application>
            Order deny,allow
            Allow from all
    </Directory>

    AddType text/html .py

    ErrorLog /var/www/site2/logs/error.log
    CustomLog /var/www/site2/logs/access.log combined

    WSGIScriptAlias /site2 /var/www/site2/index.py/
    Alias /site2/uploads /var/sftp/site2/uploads/

    <Directory /var/www/site2/>
            Order deny,allow
            Allow from all
    </Directory>

这是我的NGINX配置文件:

server {
listen 8080;
listen [::]:8080;

server_name app2.mydomain.com;
root /var/www/ghost/system/nginx-root;

location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:2368;

}
location ~ /.well-known {
    allow all;
}

client_max_body_size 50m;
}
狂欢一场

首先。Apache和Nginx是Web服务器,而不是dns服务器。他们什么都不解决。这个问题与DNS无关,但与网络服务器如何处理请求有关。

我需要由Apache解析的app1.mydomain.com和由nginx解析的app2.mydomain.com。两者都在端口80上。有可能吗?

不,这是不可能的。两个应用程序不能侦听相同的端口。您可以通过两种方式解决此问题:

  1. 让Apache在端口80上侦听,并将对app2.mydomain.com的请求代理到nginx,在另一个端口上侦听,并直接提供app1.mydomain.com。
  2. 对面的。有适用于Apache的Nginx代理。

或-使两者都由同一台Web服务器托管。Apache和nginx在许多情况下在技术层面上都是可互换的,因此从应用程序的角度来看,它并不重要。在管理方面,它们是完全不同的。

我注意到您在端口8080上运行nginx,因此我假设您想使用apache作为代理。然后为apache创建一个新的虚拟主机,例如/etc/apache2-sites-available/app2.mydomain.com.conf

<VirtualHost *:80>
   DocumentRoot "/var/www"
   ErrorLog "logs/app2-error_log"
   CustomLog "logs/app2-access_log" common
   ServerName app2.mydomain.com
   ProxyRequests Off
   <Proxy *>
          Order deny,allow
          Allow from all
    </Proxy>
     Proxypass / http://localhost:8080/
</VirtualHost>

然后运行sudo a2enmod proxy_http; sudo a2ensite app2.mydomain.com; sudo service apache2 reload

这将启用mod_proxy,mod_proxy_http,并使apache将对VirtualHost app2.mydomain.com的任何请求转发到nginx(根据您的配置,该请求在端口8080上运行)。

我尚未测试此配置,因此可能需要一些调整。

附带说明:您为什么需要nginx?根据nginx的设置,它只是代理对端口2368上运行的其他Web服务器的请求。您可以使用apache直接代理...

mod_proxy -documentation在调整它时可能很方便。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Apache和GitLab在同一台服务器上

使用Nginx在同一台服务器上运行2个uWSGI

同一台服务器上的nginx上游子域

nginx 在同一台服务器上缓存几个上游

在同一台服务器上运行Spring Clound Config和Eureka

Socket.io和Webscocket在同一台服务器上侦听

同一台服务器上的Laravel 5和Wordpress 4.1.1

同一台服务器和epmd上的多个RabbitMQ实例

在同一台服务器上的 2 个 MongoDB 之间切换

一台服务器上的 Docker、nginx 和多个站点

使用 Nginx 和 Gunicorn 在同一台服务器上的多个 Mezzanine 项目:“找不到服务器 IP 地址”

我可以在一台服务器上运行apache和glassfish吗?

同一台服务器上的多个名称服务器

在同一台服务器上(同一端口)运行Vue.js和Laravel

关于服务器,何时应该将进程移至另一台服务器而不是同一台服务器上?

Vue JS和Laravel在同一台服务器上但端口不同(SSL上的问题)

Nodejs和ReactJs在同一台服务器上一起工作

Django和Flask在同一台Nginx服务器上

Nginx多后端一台服务器

Node.js:在同一台服务器上运行多个应用

如何每次在同一台服务器上启动ActiveMQ WebConsole?

同一台服务器上的多个Wordpress安装

在同一台服务器上运行两个PHP版本

Zabbix-proxy 与 Zabbix-server 在同一台服务器上

如何链接同一台服务器上的两个 HTML 文件?

在同一台服务器上运行多个Node.js应用

AML Studio:在同一台服务器上注册多个网关

同一台服务器上的多个Laravel Horizon

在同一台服务器上运行Mongo Node Angular