nginx(在 /etc/nginx 中)

nginx(在 /etc/nginx 中)

我有一个现有的 Apache 为几个站点提供服务。

现在我有一个新的 django 网站,它是 ajax 密集型的,所以我计划在 apache 的 mod_wsgi 上运行它,但我会使用 nginx 作为反向代理。

是否可以让 nginx 作为这个新的 django 站点的反向代理,同时让 apache 直接为其他站点提供服务而不使用 nginx?

此外,如果可能的话,如果您能给我一个粗略的设置,告诉我如何做。

答案1

我解决这个问题的方法是让 nginx 反向代理所有站点,但让它们转到监听不同端口的不同 apache 虚拟主机。

nginx(在 /etc/nginx 中)

代理配置文件

proxy_redirect off; 
proxy_set_header Host $host; 
proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
client_max_body_size 10m; 
client_body_buffer_size 128k; 
proxy_connect_timeout 90; 
proxy_send_timeout 90; 
proxy_read_timeout 90; 
proxy_buffer_size 4k; proxy_buffers 4 32k; 
proxy_busy_buffers_size 64k; 
proxy_temp_file_write_size 64k;

/etc/nginx/sites-enabled/default

server {
listen 80;
server_name django-site.com;
location / {
proxy_pass http://127.0.0.1:8085;
include /etc/nginx/proxy.conf;
}
}
server {
listen 80;
server_name regular-site.com;
location / {
proxy_pass http://127.0.0.1:8086;
include /etc/nginx/proxy.conf;
}
}

Apache 设置 /etc/apache2/sites-enabled

django 网站

NameVirtualHost 127.0.0.1:8085
<VirtualHost 127.0.0.1:8085>
    ServerName django-site.com

    <Location "/">
       SetHandler python-program
       PythonHandler django.core.handlers.modpython
       SetEnv DJANGO_SETTINGS_MODULE settings
       PythonOption django.root
       PythonDebug On
       PythonPath "['/django/django-site'] + sys.path"
    </Location>
</VirtualHost>

常规站点

NameVirtualHost 127.0.0.1:8086
<VirtualHost 127.0.0.1:8086>
ServerName regular-site.com
ServerAlias regular-site.com
ServerAdmin [email protected]
DocumentRoot /var/www/regular-site/
</VirtualHost>

在 /etc/apache2/apache2.conf 中

# Include ports listing
Include /etc/apache2/ports.conf

ports.conf 必须列出每个端口 /etc/apache2/ports.conf

#Listen 80
#disabled for nginx
Listen 8085
Listen 8086

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

相关内容