Python의 Flask 프레임에서 SERVER_NAME 도메인 이름 항목 구성 자습서
5558 단어 FlaskSERVER NAME
1. 첫 번째 일: 절대 URL
알아요, URL_for 기본적으로 상대 URL이 생성되며 매개 변수가 있습니다_external, 만약 진짜로 설정하면 절대 URL이 생성됩니다 (즉, HTTP 시작 부분에 도메인 이름과 같은 정보가 있는 것).SERVER_를 지정하지 않으면NAME, 기본적으로 현재 활성 요청(request)을 사용하여 URL을 생성합니다.
다음 예제에서는 다음과 같이 설명합니다.
# filename myapp.py
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index():
return 'hello flask'
@app.route('/test')
def test():
return url_for('index', _external=True)
if __name__ == '__main__':
app.run(debug=True)
1. [상황1] 브라우저를 통해 액세스앱이 실행된 후 로컬 5000 포트에서 감청합니다.
(env) F:\tmp>python myapp.py
* Running on http://127.0.0.1:5000/
* Restarting with reloader
브라우저를 통해 액세스하는 경우http://127.0.0.1:5000/test, 다음 항목이 반환됩니다.http://127.0.0.1:5000/.브라우저를 통해 액세스하는 경우http://localhost:5000/test, 다음 항목이 반환됩니다.http://localhost:5000/.
SERVER_가 설정되어 있지 않음을 알 수 있습니다.NAME의 경우 url_for 생성된 절대 URL은 요청한 URL에 의존합니다.브라우저를 통해 접근하지 않는 상황을 살펴보겠습니다.
2. [상황2] 비브라우저 액세스
이 상황은request 요청이 없는 상황을 가리킨다.
우리는 Python Shell을 통해 시뮬레이션합니다.
>>> from myapp import app
>>> with app.app_context():
... print url_for('index', _external=True)
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "F:\tmp\env\lib\site-packages\flask\helpers.py", line 287, in url_for
raise RuntimeError('Application was not able to create a URL '
RuntimeError: Application was not able to create a URL adapter for request indep
endent URL generation. You might be able to fix this by setting the SERVER_NAME
config variable.
위의 뜻은 프로그램이 request와 관련이 없는 URL을 만드는 데 사용할 URL 어댑터를 만들 수 없다는 것입니다. SERVER_를 설정할 수 있습니다NAME가 이 문제를 해결합니다.자, 다음은 SERVER_NAME 값을 설정한 후 다음을 수행합니다.
>>> app.config['SERVER_NAME'] = 'example.com'
>>> with app.app_context():
... print url_for('index', _external=True)
...
http://example.com/
PS: 일반 SERVER_NAME 는 웹 사이트의 도메인 이름으로 설정됩니다.Flask-Mail 관련 글에는 다음과 같은 내용이 있습니다.
많은 Flask 확장은 하나의 활성 응용 프로그램과 요청 상하문에서 실행된다고 가정하고, Flask-Mail의send 함수는current_앱이라는 상하문이 생겼기 때문에 메일로 하겠습니다.send () 함수가 한 라인에서 실행될 때 인위적으로 상하문을 만들어야 합니다. 모두send_async_이메일에서 앱을 사용했습니다.app_컨텍스트 () 를 만듭니다.
따라서request에 의존하지 않는 절대 URL(예를 들어 비동기적으로 메일을 보낼 때 메일에서 사이트의 특정 페이지를 만드는 URL)을 생성하려면 SERVER_를 설정해야 한다NAME.
두 번째: 하위 도메인 이름 지원
SERVER_NAME 키는 하위 도메인 이름 지원에 사용됩니다.Flask는 기존 서버 이름을 알기 전에 하위 도메인 부분을 추측할 수 없기 때문에 하위 도메인을 사용하고 싶다면 이 옵션이 필요하고 세션 쿠키에도 사용됩니다.
Flask에만 하위 도메인 이름을 모르는 문제가 있는 것이 아니라 브라우저에도 이런 문제가 있다는 것을 명심하세요.대부분의 현대 웹 브라우저는 서버 이름에 점이 없는 크로스 도메인 이름 쿠키를 허용하지 않습니다.따라서 서버의 이름이localhost라면,localhost와 모든 하위 도메인 이름에 쿠키를 설정할 수 없습니다.'my 응용 프로그램과 같은 적합한 서버 이름을 선택하십시오.local', 원하는 서버 이름 + 하위 도메인 이름을 host 설정에 추가하거나 로컬bind를 설정합니다.
Examples
-------->http://book.muxistudio.com
||
http://muxistudio.com-------->http://blog.muxistudio.com
||
-------->http://share.muxistudio.com
1. 로컬 테스트/etc/hosts 파일 수정
주의: 로컬 테스트에서만 유효합니다!
필요한 모든 하위 도메인 이름을 추가합니다. 예:
127.0.0.1 flask.dev localhost #
127.0.0.1 test.flask.dev localhost #
127.0.0.1 othertest.flask.dev localhost #
Flask에 적용된 구성 파일에'SERVER_ 추가NAME'애플리케이션 구성에서'SERVER_NAME 는 지정된 도메인 이름과 기본 감청 포트로 설정됩니다. 예:
#...
app = Flask(__name__)
app.config['SERVER_NAME'] = 'flask.dev:5000'
#...
2. 청사진 구성청사진의subdomain은hosts 파일에 추가된 하위 도메인 이름입니다
#...
# Blueprint declaration
bp = Blueprint('subdomain', __name__, subdomain="<user>")
#...
# Register the blueprint into the application
app.register_blueprint(bp)
#...
3. 서버 측 구성Flask 응용 프로그램 설정의'SERVER_NAME 운영 환경에 등록된 도메인 이름으로 수정
flask.dev:5000 ----> muxistudio.com
4.Nginx 구성감청 포트를 설정하고 다음 예에서 정규 표현식을 사용하여 사용자가 방문한 하위 도메인 이름을 가져옵니다. www에 대해서는 정규 표현식을 가져올 때 필터링하고 사용자가 방문할 때 www.yourdomain으로 리디렉션해야 합니다.com 페이지, 그렇지 않으면 www은 하위 도메인 이름으로 간주됩니다.
구성 인스턴스:
server {
listen 80;
listen 443 ssl;
ssl_certificate /usr/local/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/nginx/ssl/nginx.key;
server_name ~^www\.(?<user>.+\.)?markdownblog\.com$;
return 301 "$scheme://${user}markdownblog.com$request_uri";
}
server {
listen 80;
listen 443 ssl;
ssl_certificate /usr/local/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/nginx/ssl/nginx.key;
server_name ~^.+\.markdownblog\.com$ markdownblog.com;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8085;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
GCE로 Flask를 이동!GCE에서 우선 Flask를 사용하여 웹 페이지를 게시하는 단계입니다. 우선이므로, 움직이면 좋다고 하는 느낌입니다. 우선 공개하므로 최소 사양으로 갑니다. 다음 구성으로 인스턴스를 만듭니다. 이름 gce-flask...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.