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脚本挂钩添加到
修改现有配置。

谢谢您的回答!这是非常有用的,我在任何地方都找不到。