如何为 Django 应用程序正确配置 apache 反向代理服务

2023-12-25

您好,我一直在尝试将 apache 正确配置为我的 django 应用程序的反向代理。 当从端口:4300 提供服务时,一切正常,但是当我尝试使用反向代理时,一切都出错了。

当我登录后尝试访问时

192.168.100.201/事实

我得到了预期的功能,但是当我按任何内容到 django 的管理应用程序时,我得到

192.168.100.201/管理员

当我应该得到

192.168.100.201/事实/管理

即使我在浏览器中编写它,我仍然会重定向到192.168.100.201/admin

我知道这也许是一个可疑的问题,但这是我无法意识到的。

设置.py

"""

Django settings for SEMFAC project.

Generated by 'django-admin startproject' using Django 1.11.13.

For more information on this file, see
https://docs.djangoproject.com/en/1.11/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.11/ref/settings/
"""

import os
from django.utils.translation import ugettext_lazy as _

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'wkf8aie3kc6@xb0-_y%rwmp*tq)hqv7t+d0l6a9wop0l$1m336'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['192.168.100.205','192.168.100.203','192.168.100.201']


# Application definition

INSTALLED_APPS = [
    'fact.apps.FactConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'SEMFAC.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'SEMFAC.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/1.11/topics/i18n/
LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

LANGUAGES = (
    ('en-US', _('English')),
    ('es-MX', _('Espanol')),
)

LANGUAGE_CODE = 'es-MX'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/

STATIC_URL = '/static/'

LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/'
LOGOUT_REDIRECT_URL = '/'
TEMPLATE_PATH = os.path.join(BASE_DIR, 'templates')

在 urls.py 文件中,这是配置

    from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^',include('fact.urls')),
    url(r'^admin/', admin.site.urls),
]

在我的 django.conf 文件中,配置如下

<VirtualHost 192.168.100.205:4300>
Alias /static /opt/SEMFAC/fact/static
<Directory /opt/SEMFAC/fact/static>
    Require all granted
</Directory>

<Directory /opt/SEMFAC/SEMFAC>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>



WSGIDaemonProcess SEMFAC python-path=/opt/SEMFAC:/opt/SEMFAC/lib/python2.7/site-packages
WSGIProcessGroup SEMFAC
WSGIScriptAlias / /opt/SEMFAC/SEMFAC/wsgi.py
</VirtualHost>

我有 apache 内的配置

<Location /fact>
  ProxyPreserveHost On
  ProxyPass http://192.168.100.205:4300
  ProxyPassReverse http://192.168.100.205:4300
</Location>

这就是诀窍所​​在

<VirtualHost 192.168.100.205:4300>
Alias /fact/static /opt/SEMFAC/fact/static
<Directory /opt/SEMFAC/fact/static>
    Require all granted
</Directory>

<Directory /opt/SEMFAC/SEMFAC>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>


WSGIDaemonProcess SEMFAC python-path=/opt/SEMFAC:/opt/SEMFAC/lib/python2.7/site-packages
WSGIProcessGroup SEMFAC
WSGIScriptAlias /fact /opt/SEMFAC/SEMFAC/wsgi.py
</VirtualHost>

<VirtualHost *:*>
    ProxyPreserveHost On
    ProxyPass /fact http://192.168.100.205:4300/fact
    ProxyPassReverse /fact http://192.168.100.205:4300/fact

    ServerName localhost
</VirtualHost>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 Django 应用程序正确配置 apache 反向代理服务 的相关文章

随机推荐

  • Ruby on Rails,找不到有效的 gem 'rails'

    我安装了 ruby 并更新了 ruby gems 现在我想下载 Rails 3 2 13 我写 gem install Rails v 3 2 13 我需要这个版本 我有这个错误 ERROR Could not find a valid g
  • 为什么我们需要在Python中进行编码和解码?

    编码 解码的用例是什么 我的理解是 编码用于将字符串转换为字节字符串 以便能够在程序中传递非 ascii 数据 而decode就是将这个字节串转换回字符串 有点遵循 示例显示即使未编码 解码 非 ascii 字符也能成功打印 例子 val1
  • 在 PDF 中插入换行符

    我正在使用 PHP 即时生成一些 PDF 文件 我的问题是我需要在将插入 PDF 文件的文本的某些部分插入换行符 就像是 pdf gt InsertText Line one n nLine two 所以它打印 Line one Line
  • Visual Studio 2015 非常慢

    我刚安装完 整个IDE速度超级慢 看起来它正在后台进行某种繁重的 CPU 调用 整个 IDE 几乎冻结并在大约 2 3 秒内变得无响应 我在使用 Visual Studio 2013 Ultimate 时没有遇到此问题 我正在运行 Visu
  • 添加变量导致的段错误

    诚然 我是一个纯 C 新手 但这让我难住了 我正在研究链表实现以进行练习 并且通过简单地将变量添加到 split node 函数中 我遇到了段错误 include
  • 比较两个表的值并列出不同的行

    这个问题与这个问题 https stackoverflow com questions 4602083 sql compare data from two tables 4604221 comment 7562192 但只是略有不同 我有
  • 如何像 jQuery 那样实现链接模式? [复制]

    这个问题在这里已经有答案了 如何创建一个像 jQuery 使用的前缀 例如 在 jQuery 中我可以使用 footer css display none 我想启用类似的语法 如下所示 google footer chrome displa
  • Java Robot createScreenCapture 性能

    我需要抓取一系列屏幕截图并将它们连接成一部电影 我正在尝试使用 java Robot 类来捕获屏幕 但 createScreenCapture 方法在我的机器上花费了超过 1 秒的时间 我什至连 1 fps 都达不到 有办法加快速度吗 或者
  • 如何覆盖android home按钮

    我一直在搜索 Android 文档和 stackoverflow 我正在阅读的大多数答案都说您无法禁用或覆盖 Android 主页按钮 尝试过 不起作用 https stackoverflow com questions 6507063 h
  • Common LISP:将(未知)struct 对象转换为 plist?

    defstruct mydate constructor make mydate year month day year 1970 month 1 day 1 defvar date1 make mydate 1992 1 1 问题更普遍
  • 多线程基准测试

    我进行了大量的数学计算来计算孪生素数 https en wikipedia org wiki Twin prime范围内的数字 我已在线程之间划分任务 在这里您可以看到执行时间与线程数的关系 我的问题是关于以下理由的 为什么单线程和双线程的
  • 当我需要 500000 时,javascript parseFloat '500,000' 返回 500

    这会是处理这个问题的好方法吗 我已经考虑过删除逗号然后解析为浮动 你知道更好 更干净的方法吗 Thanks parseFloat theString replace g
  • PHP + jQuery + Ajax 表单提交-同一页面返回结果

    我想要以下内容 用户通过单击 index php 表单输入由外部 PHP 文件处理 search php 结果发布在原始页面 index php 在一个 div 中 我已经整理了大部分代码 它通过单击提交表单并将其发送到 PHP 脚本 我现
  • 从嵌入资源创建图像

    在过去的两天里 这让我发疯 我发现的任何接近的东西似乎都不适合我的情况 也许有人可以指出我做错了什么 我有一个 WPF 项目 其中包含相当多的图像 80 左右 我已将它们添加到项目中名为 Images 的文件夹中 它们目前被设置为嵌入式资源
  • save(false) 和 save(:validate => false) 之间的区别

    有什么区别save false and save validate gt false 据我所知 功能是相同的 使用的版本 validate是在 api 中 这让我相信save false 是已弃用的版本吗 在遵循以下内容时 我想到了这一点
  • 如何同时重命名列并通过迁移更改其类型

    In my general exams表 我有一个名为semester 类型为string 现在我想把它的名字改成semester id 类型为integer 我读过有关迁移的内容 它有可用的转换 rename column table n
  • Base64 二进制解码 32 位数组

    我得到一个数组 它是32 位 大端无符号整数 基本上纯文本是这样的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 That 32位字节序数组本身以二进制 base64 编码AAAAAQAAAAIAAAADAA
  • 获取最近成功执行 DAG 的日期

    我希望在 Airflow 中创建转换 并且希望确保从上次运行 DAG 以来从源获取所有数据 以便更新我的目标表 为此 我希望能够获得最近成功的执行 我发现了这个 Apache Airflow 宏获取最后一次 dag 运行执行时间 https
  • 将自定义转换器与 Kafka Connect 结合使用?

    我正在尝试将自定义转换器与 Kafka Connect 一起使用 但似乎无法正确执行 我希望有人有这方面的经验并可以帮助我解决这个问题 初始情况 我的自定义转换器的类路径是custom CustomStringConverter 为了避免任
  • 如何为 Django 应用程序正确配置 apache 反向代理服务

    您好 我一直在尝试将 apache 正确配置为我的 django 应用程序的反向代理 当从端口 4300 提供服务时 一切正常 但是当我尝试使用反向代理时 一切都出错了 当我登录后尝试访问时 192 168 100 201 事实 我得到了预