Amazon web services 不同服务器的Elasticbeanstalk Nginx反向代理配置
当用户访问我的网站上的Amazon web services 不同服务器的Elasticbeanstalk Nginx反向代理配置,amazon-web-services,nginx,amazon-elastic-beanstalk,Amazon Web Services,Nginx,Amazon Elastic Beanstalk,当用户访问我的网站上的/blog时,我希望反向代理不同于我的应用程序的服务器IP。我已经设置了我认为正确的nginx位置块配置,并成功地使用该配置部署了一个ebextension,但是当我导航到/blog时,我收到了从应用程序服务器呈现的404页面。进一步检查时,请求显示请求是向应用程序IP发出的,而不是在my nginx设置的/blog位置块中找到的IP地址。是否有人可以帮助确定我的ebextension、nginx或应用程序设置可能存在哪些问题,从而阻止nginx位置块工作?除了请求url和
/blog
时,我希望反向代理不同于我的应用程序的服务器IP。我已经设置了我认为正确的nginx位置
块配置,并成功地使用该配置部署了一个ebextension,但是当我导航到/blog
时,我收到了从应用程序服务器呈现的404页面。进一步检查时,请求显示请求是向应用程序IP发出的,而不是在my nginx设置的/blog
位置块中找到的IP地址。是否有人可以帮助确定我的ebextension、nginx或应用程序设置可能存在哪些问题,从而阻止nginx位置块工作?除了请求url和检查我的开发工具中的“网络资源”选项卡之外,我不知道如何进行测试
这是我的ebextensions文件夹设置:
> ebextensions
=> nginx
==> conf.d
==- 01_nginx_blog_rp.config
-00_nginx_https_rw.config
-02_sequelize_db_migration.config
01\u nginx\u blog\u rp.config:
files:
"/etc/nginx/conf.d/01_blog_proxy.conf":
mode: "000644"
owner: root
group: root
content: |
client_max_body_size 10M;
"/etc/nginx/conf.d/02_blog_location_block.conf":
mode: "000644"
owner: root
group: root
content: |
server {
location /blog {
proxy_pass http://xxx.xxx.xxx.xxx:2368;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
container_commands:
01_reload_nginx:
command: "sudo service nginx reload"
仅在
conf.d
中添加简单的location
块是不可能实现的
您基本上定义了一个新的服务器
块,其中包含位置
。nginx从未使用这个新的server
块,因为您已经拥有由ElasticBeanstalk生成的默认server
config,其中包含配置的listen
和server\u name
指令。nginx使用这两个指令来决定将请求转发到何处,因此所有传入的请求都将发送到应用程序服务器,而忽略您的自定义设置
您真正需要做的是修改现有的服务器
并将您的位置
添加到其中
这可以通过几种不同的方式完成:
> ebextensions
=> nginx
==> conf.d
==- 01_nginx_blog_rp.config
-00_nginx_https_rw.config
-02_sequelize_db_migration.config
-创建新的nginx配置并删除默认配置。
在本例中,他们只是添加了一个新的.ebextensions/proxy.config
,并用自定义的nginx配置替换默认的nginx配置。使用这种方法,您可以完全控制nginx配置
-创建新配置并在默认配置之前进行处理。
如果您仍然想保留默认配置,您可以继续使用您的00\u nginx\u https\u rw.config
配置名称,这样nginx将首先处理您的配置,如果在您的配置中有正确的服务器名称
和侦听
则nginx将使用它来处理传入的请求
-添加钩子以修改默认配置。
您可以找到另一个解决方案-将bash脚本挂钩添加到
修改现有配置。谢谢您的回答!这是非常有用的,我在任何地方都找不到。