我有使用nginx和apache2的ubuntu 16.04。指向此计算机的DNS A记录有2条:
我需要由Apache解析的app1.mydomain.com和由nginx解析的app2.mydomain.com。两者都在端口80上。有可能吗?
此外,Apache需要处理2个不同的应用程序(site1和site2)。
我想:
这是我的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上。有可能吗?
不,这是不可能的。两个应用程序不能侦听相同的端口。您可以通过两种方式解决此问题:
或-使两者都由同一台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] 删除。
我来说两句