不久前我问了同样的问题,但我想我没有把我的问题说对。我正在尝试将整个虚拟主机域反向代理到另一个虚拟主机的子目录,例如http://host2.com -> http://host1.com/host2。
Apache 的默认站点文件是这个
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName "host1.com"
<Directory /srv/www/host1>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order deny,allow
Allow from all
</Directory>
DocumentRoot /srv/www/host1
WSGIScriptAlias / /srv/www/host1/apache/django.wsgi
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName "host2.com"
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://host1.com/host2
ProxyPassReverse / http://host1.com/host2
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
此时,问题是每当我去http://host2.com 时,它都会显示http://host1.com而不是http://host1.com/host2。我错过了什么?我不确定这是否重要,但是 host1 是使用带有 wsgi 的 Django 托管的。
我刚刚开始在我的 Ubuntu 10.04 上探索 Nginx。我安装了 Nginx,并且能够在本地主机上获得“欢迎使用 Nginx”页面。但是,即使我在站点可用/默认文件中进行了更改,我也无法添加新的 server_name。尝试重新加载/重新启动 Nginx,但没有任何效果。一个有趣的观察。浏览器中的“ http://mycomputername ”有效。所以不知何故有一个命令像'server_name $hostname' 某处覆盖了我的规则。
文件:sites-available/mine.enpass
server {
listen 80;
server_name mine.enpass ;
access_log /var/log/nginx/localhost.access.log;
location / {
root /var/www/nginx-default;
index index.html index.htm;
}
}
Run Code Online (Sandbox Code Playgroud)
文件:nginx.conf
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
# multi_accept on;
}
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; …Run Code Online (Sandbox Code Playgroud)