Docker - 运行nginx作为Redmine的代理


撩心
2025-02-07 01:01:57 (1月前)
  1. 我想将nginx的设置用于redmine(以及其他服务)反向代理,但是当将请求从nginx转发到redmine时,我在浏览器上看到了一个501错误的网关请求,并且“...

3 条回复
  1. 0# v-star*위위 | 2019-08-31 10-32



    您可以使用

    nginx代理容器

    nginx-proxy设置一个运行nginx和docker-gen的容器。 docker-gen为nginx生成反向代理配置,并在启动和停止容器时重新加载nginx。



    它比手动配置nginx更方便


  2. 1# 只怕再见是故人 | 2019-08-31 10-32



    注意:我没有看过

    布哈罗夫谢尔盖的回答

    然而,这可能更优雅。





    这就是我想出的。我发现了两种实现网络共享功能的方法和一种使用所述方法时出现的Redmine问题的黑客攻击。




    方法1(首选,因为它更短,但可能不是因为它已被弃用?):

    集装箱连接

    </强>



    泊坞窗,compose.yaml




    1. version: 2
      services:
      nginx:
      image: nginx
      ports:

    2.         - "80:80"
    3.     volumes:
    4.         - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    5.     # Method 1: Linking
    6.     links:
    7.         - redmine
    8. redmine:
    9.     image: redmine
    10.     # Method 1: Exposing port to linked containers
    11.     expose:
    12.         - "3000"
    13. </code>


    nginx.conf




    1. http {
      server {
      listen 80;

    2. Method 1: Access via alias from link

          location /redmine/ {
    3.         proxy_pass http://redmine:3000/;
    4.     }
    5. }

    6. </code>



    方法2:

    定义网络

    </强>



    泊坞窗,compose.yaml




    1. version: 2
      services:
      nginx:
      image: nginx
      ports:

    2.         - "80:80"
    3.     volumes:
    4.         - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    5.     # Method 2
    6.     networks:
    7.         shared_net:
    8.             ipv4_address: 172.22.0.4
    9. redmine:
    10.     image: redmine
    11.     # Method 2
    12.     networks:
    13.         shared_net:
    14.             ipv4_address: 172.22.0.5
    15. Method number 2: Via networks

      networks:
      shared_net:
      driver: bridge
      ipam:
      config:

    16.             - subnet: 172.22.0.0/16
    17.               gateway: 172.22.0.1
    18. </code>


    nginx.conf




    1. http {
      server {
      listen 80;

    2. Method 2: Access via ip address in shared network

          location /redmine_networked/ {
    3.         proxy_pass http://172.22.0.5:3000/;
    4.     }
    5. }
    6. }

    7. </code>


    Redmine Hack:

    通过郊区访问redmine



    上述解决方案允许访问Redmine的主页。但是,所有Redmine URL都指向root(例如,’/‘表示home,而不是’/ redmine’或’/ redmine_networked’)。所以这些链接都不起作用。如果设置nginx将所有’/‘url重定向到Redmine,这将是一个非问题。以下黑客假设情况并非如此。



    要让Redmine指向配置的URL,需要编辑config / environment.rb文件。



    这是黑客:



    1.    > docker exec -it <redmine_container> bash
    2. redmine> cd config

    3. Were going to install vim (this is a hack)

      redmine> apt-get update
      redmine> apt-get install vim
      redmine> vim environment.rb

    4. </code>



    更改config / environment.rb底部的以下行




    1. Initialize the Rails application Rails.application.initialize!

    2.   </code>
    3. </pre>
    4. <P>
    5.   
    6. </p>
    7.  <pre>
    8.   <code>
    9.     RedmineApp::Application.routes.default_scope = "/redmine" 
    10. Initialize the Rails application Rails.application.initialize!

    11.   </code>
    12. </pre>



    1. redmine> exit

    2. docker restart (or just kill other docker process and run docker up again)

    3. </code>

登录 后才能参与评论