사실 피하려고하는 것은 microservice architecture (Martin Fowler article)처럼 보입니다. 기본적으로 하나의 모 놀리 식 응용 프로그램 대신 전체적으로 작동하도록 다중화 된 최소한의 자체 포함 서비스를 제안합니다. 그것의 찬반 양론이 있지만, 오늘은 더 좋은 것으로 간주됩니다. 최소한 큰 규모로.
따라서 애플리케이션을 설계하는 한 가지 방법은 마이크로 서비스 아키텍처이며 여러 내부 서버를 실행하는 것은 문제가되지 않습니다. 이 접근법의 일부 복잡성이 인프라로 옮겨졌습니다. 즉, 품질 배치, 모니터링 등이 필요합니다.
Andew의 대답은 정확합니다. 그러나 구체적으로 CherryPy은 모든 기능을 갖춘 HTTP 서버입니다. 일반적으로 gunicorn 정도의 다른 중간 지점이 필요하지 않으므로 WSGI를 피할 수 있습니다. HTTP를 사용하십시오. 즉, nginx은 CherryPy 내부 HTTP 서버에 대한 역방향 HTTP 프록시 역할을합니다.
가장 간단한 방법은 다음과 같습니다.
파이썬이 본격적인 CherryP를 들어 응용 프로그램
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cherrypy
config = {
'global' : {
'server.socket_host' : '127.0.0.1',
'server.socket_port' : 8080,
'server.thread_pool' : 8
},
'/' : {
'tools.proxy.on' : True
}
}
class App:
@cherrypy.expose
def index(self):
return type({}.keys()).__name__
if __name__ == '__main__':
cherrypy.quickstart(App(), '/app1', config)
파이썬 3 응용 프로그램
#!/usr/bin/env python3
import cherrypy
config = {
'global' : {
'server.socket_host' : '127.0.0.1',
'server.socket_port' : 8081,
'server.thread_pool' : 8
},
'/' : {
'tools.proxy.on' : True
}
}
class App:
@cherrypy.expose
def index(self):
return type({}.keys()).__name__
if __name__ == '__main__':
cherrypy.quickstart(App(), '/app2', config)
의 nginx의 설정
server {
listen 80;
server_name ngx-test;
root /var/www/ngx-test/www;
location /app1 {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /app2 {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
y 배치를 this answer에서 살펴보십시오.
고마워요! 나는 오늘 그것을 시도 할 것이다. 초기 읽기가 유망 해 보인다. – ashrles