我在为我的 aiohttpTCPSite
连接实现 SSL 时遇到问题。我有一个用 Ubuntu 和 Apache 设置的 VPS。我的配置文件设置为启用 CORS,并且 SSL 在服务器上处于活动状态。当我转到实际资源时,即https://irisslivedev.com:448没有问题,进一步让我相信这是一个 python 异步服务器问题。
在前端我收到资源的 404 错误,这只能意味着TCPSite
服务器没有在端口上侦听......对吗?这是服务器的代码:
sslcontext = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
sslcontext.load_cert_chain('cert2.pem', 'privkey2.pem')
app = web.Application()
sio = socketio.AsyncServer(cors_allowed_origins='*')
sio.attach(app)
SOCKET_PORT = 448
SERVER_URL = "irisslivedev.com"
async def runSIOWebApp(port):
# We bind our aiohttp endpoint to our app
# router
#web.run_app(self.app, host=self.server, port=self.port)
logger.log_il("Initializing Web App Runner...")
runner = web.AppRunner(app)
try:
logger.log_il("Starting Web App Runner on %s:%s..." % (SERVER_URL,port))
await runner.setup()
site = web.TCPSite(runner, SERVER_URL, port, ssl_context=sslcontext)
logger.log_il("Starting Site...")
await site.start()
while (True):
await asyncio.sleep(1)
except Exception as e:
logger.log_il("Could not start SIO Web App. %s " % e)
traceback.print_exc(file=sys.stdout)
finally:
logger.log_il("Closing Web App Runner...")
await runner.cleanup()
当我运行堆栈跟踪时,这是输出:
Traceback (most recent call last):
File "il_receiver.py", line 198, in runSIOWebApp
await site.start()
File "C:\Users\jose\Python\lib\site-packages\aiohttp\web_runner.py", line 100, in start
self._server = await loop.create_server( # type: ignore
File "C:\Users\jose\Python\lib\asyncio\base_events.py", line 1459, in create_server
raise OSError(err.errno, 'error while attempting '
OSError: [Errno 10049] error while attempting to bind on address ('165.22.39.188', 443): the requested address is not valid in its context
我真的不知道从哪里开始,我已经搜索了所有我能找到的资源和类似的答案。据我了解,当您尝试绑定到不在本地机器上的套接字时,或者当一个套接字已经在使用时,就会出现错误。
这是我的配置:
``
ServerAdmin [email]
DocumentRoot /var/www/165.22.39.188/html
ServerName 165.22.39.188
Header always set Access-Control-Allow-Origin "https://irisslivedev.com"
Header always set Access-Control-Allow-Methods "*"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "*"
Header always set Access-Control-Allow-Credentials true
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerAlias irisslivedev.com
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias www.irisslivedev.com
SSLCertificateFile /cert.pem
SSLCertificateKeyFile /pkey.pem
</VirtualHost>
</IfModule>
``如果有什么办法可以让这个问题更清楚,请告诉我。