Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] Nginx 無法反代本地的GPT4模型 #4645

Closed
1 of 3 tasks
WillWang2122 opened this issue May 9, 2024 · 5 comments
Closed
1 of 3 tasks

[Bug] Nginx 無法反代本地的GPT4模型 #4645

WillWang2122 opened this issue May 9, 2024 · 5 comments
Labels
bug Something isn't working

Comments

@WillWang2122
Copy link

Bug Description

在我的伺服器上為了解決CORS的問題,所以我做了如下的設定:
反代 app.mydomain.com/gui 到nextweb (前端GUI), nginx 設定如下:
location ^~ /gui {
proxy_pass http://172.17.0.4:3000/;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}

在app.mydomain.com 的root 是反代到我的後端模型的endpoint.
location ^~ / {
proxy_pass http://172.17.0.9:7077;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}

我發現在第一個請求之後的下一個請求,請求 app.mydomain.com 而不是 app.mydomain.com/gui,導致 404 錯誤。我該如何確保下一個請求仍然發送到 app.mydomain.com/gui,並且 nginx 將其代理到正確的內部 IP 和端口?
在部署的時候有寫到base url = app.mydomain.com/gui

Steps to Reproduce

我是用docker 部署nextweb的: docker compose file 如下:

networks:
    1panel-network:
        external: true
services:
    chatgpt-next-web:
        container_name: ${CONTAINER_NAME}
        deploy:
            resources:
                limits:
                    cpus: ${CPUS}
                    memory: ${MEMORY_LIMIT}
        environment:
            - OPENAI_API_KEY=${API_KEY}
            - CODE=${SECRET_KEY}
            - PROXY_URL=${PROXY}
            - BASE_URL=${API_BASE_URL}
        image: yidadaa/chatgpt-next-web:v2.12.2
        labels:
            createdBy: Apps
        networks:
            - 1panel-network
        ports:
            - ${HOST_IP}:${PANEL_APP_PORT_HTTP}:3000
        restart: always

然後就是設定nginx
設定 Nginx 反向代理至前端 GUI: 在的 Nginx 設定檔中,為 app.mydomain.com/gui 設定一個 location 區塊,並將其反向代理至前端 GUI(位於 http://172.17.0.4:3000/)。以下是相關的 Nginx 設定:

location ^~ /gui {
proxy_pass http://172.17.0.4:3000/;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}

設定 Nginx 反向代理至後端: 在 Nginx 設定檔中,為 app.mydomain.com 的根目錄設定一個 location 區塊,並將其反向代理至後端(位於 http://172.17.0.9:7077)。以下是相關的 Nginx 設定:

location ^~ / {
proxy_pass http://172.17.0.9:7077;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}

Expected Behavior

Nextweb 正常運作

Screenshots

Screenshot 2024-05-09 155434
Screenshot 2024-05-09 155631

Deployment Method

  • Docker
  • Vercel
  • Server

Desktop OS

Windows11

Desktop Browser

Chrome

Desktop Browser Version

125.0.6422.41

Smartphone Device

No response

Smartphone OS

No response

Smartphone Browser

No response

Smartphone Browser Version

No response

Additional Logs

No response

@WillWang2122 WillWang2122 added the bug Something isn't working label May 9, 2024
@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically.


Title: [Bug] Nginx cannot reverse the local GPT4 model

Bug Description

In order to solve the CORS problem on my server, I made the following settings:
Reverse app.mydomain.com/gui to nextweb (front-end GUI), nginx settings are as follows:
location ^~ /gui {
proxy_pass http://172.17.0.4:3000/;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}

The root at app.mydomain.com is the endpoint that backends to my backend model.
location ^~ / {
proxy_pass http://172.17.0.9:7077;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}

I found that the next request after the first one, requesting app.mydomain.com instead of app.mydomain.com/gui, resulted in a 404 error. How can I ensure that the next request is still sent to app.mydomain.com/gui and that nginx proxies it to the correct internal IP and port?
During deployment, base url = app.mydomain.com/gui is written.

Steps to Reproduce

I used docker to deploy nextweb: docker compose file is as follows:

networks:
    1panel-network:
        external: true
services:
    chatgpt-next-web:
        container_name: ${CONTAINER_NAME}
        deploy:
            resources:
                limits:
                    cpus: ${CPUS}
                    memory: ${MEMORY_LIMIT}
        environment:
            - OPENAI_API_KEY=${API_KEY}
            - CODE=${SECRET_KEY}
            - PROXY_URL=${PROXY}
            - BASE_URL=${API_BASE_URL}
        image: yidadaa/chatgpt-next-web:v2.12.2
        labels:
            createdBy: Apps
        networks:
            - 1panel-network
        ports:
            - ${HOST_IP}:${PANEL_APP_PORT_HTTP}:3000
        restart: always

Then just set nginx
Configure Nginx to reverse proxy to the front-end GUI: In the Nginx configuration file, set a location block for app.mydomain.com/gui and reverse-proxy it to the front-end GUI (located at http://172.17. 0.4:3000/). The following are the relevant Nginx settings:

location ^~ /gui {
proxy_pass http://172.17.0.4:3000/;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}

Configure Nginx reverse proxy to the backend: In the Nginx configuration file, set a location block for the root directory of app.mydomain.com and reverse proxy it to the backend (located at http://172.17. 0.9:7077). The following are the relevant Nginx settings:

location ^~ / {
proxy_pass http://172.17.0.9:7077;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}

Expected Behavior

Nextweb is functioning normally

Screenshots

Screenshot 2024-05-09 155434
Screenshot 2024-05-09 155631

Deployment Method

  • Docker
  • Vercel
  • Server

Desktop OS

Windows 11

Desktop Browser

Chrome

Desktop Browser Version

125.0.6422.41

Smartphone Device

No response

Smartphone OS

No response

Smartphone Browser

No response

Smartphone Browser Version

No response

Additional Logs

No response

@hossain666

This comment was marked as spam.

@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically.


https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/assets/40236765/97eb28f7-bfdc-48cc-8766-204ce63c4a36

On Thu, 9 May, 2024 at 1:59PM, Robert Black @.***>
wrote:

Bug Description

In order to solve the CORS problem on my server, I made the following settings:
Reverse app.mydomain.com/gui to nextweb (front-end GUI), nginx settings are as follows:
location ^~ /gui {
proxy_pass http://172.17.0.4:3000/;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}

The root at app.mydomain.com is the endpoint that backends to my backend model.
location ^~ / {
proxy_pass http://172.17.0.9:7077;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}

I found that the next request after the first request, requesting app.mydomain.com instead of app.mydomain.com/gui, resulted in a 404
Error. How can I ensure that the next request is still sent to app.mydomain.com/gui and that nginx proxies it to the correct internal IP and port?
During deployment, base url = app.mydomain.com/gui is written.
Steps to Reproduce

I used docker to deploy nextweb: docker compose file is as follows:

networks:
1panel-network:
external: true
services:
chatgpt-next-web:
container_name: ${CONTAINER_NAME}
deploy:
resources:
limits:
cpus: ${CPUS}
memory: ${MEMORY_LIMIT}
environment:

  • OPENAI_API_KEY=${API_KEY}
  • CODE=${SECRET_KEY}
  • PROXY_URL=${PROXY}
  • BASE_URL=${API_BASE_URL}
    image: yidadaa/chatgpt-next-web:v2.12.2
    labels:
    createdBy: Apps
    networks:
    -1panel-network
    ports:
  • ${HOST_IP}:${PANEL_APP_PORT_HTTP}:3000
    restart: always

Then set nginx
Configure Nginx reverse proxy to the front-end GUI: In the Nginx configuration file, set a location for app.mydomain.com/gui
block and reverse-proxy it to the front-end GUI at http://172.17.0.4:3000/. The following are the relevant Nginx settings:

location ^~ /gui {
proxy_pass http://172.17.0.4:3000/;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}

Configure Nginx reverse proxy to the backend: In the Nginx configuration file, set a location for the root directory of app.mydomain.com
block and reverse-proxy it to the backend at http://172.17.0.9:7077. The following are the relevant Nginx settings:

location ^~ / {
proxy_pass http://172.17.0.9:7077;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
add_header Cache-Control no-cache;
}
Expected Behavior

Nextweb is functioning normally
Screenshots

Screenshot.2024-05-09.155434.png (view on web)
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/assets/168748301/32dd395b-6b7e-4c1d-b7a6-3a061db075e2
Screenshot.2024-05-09.155631.png (view on web)
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/assets/168748301/1c3f410a-5c0c-4019-a1c6-11927f0227a0
Deployment Method

  • Docker
    -Vercel
    -Server

Desktop OS

Windows11
Desktop Browser

Chrome
Desktop Browser Version

125.0.6422.41
Smartphone Device

No response
Smartphone OS

No response
Smartphone Browser

No response
Smartphone Browser Version

No response
Additional Logs

No response


Reply to this email directly, view it on GitHub
#4645, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/BGQMJGEHRWDQJ3IAP22RGCTZBMUEVAVCNFSM6AAAAABHOLMKBKVHI2DSMVQWIX3LMV43ASLTON2WKOZSGI4DOMJSGM4DEOI
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

@Dean-YZG
Copy link
Contributor

你这里报错静态资源 not found ,原因是由于静态资源打包到根目录了,因此,html中的静态资源地址指向的是根目录,而不是/gui,如果在不修改nextchat 静态资源打包目录的情况下,你需要对静态资源的资源路径也进行rewrite才能解决这个问题

@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically.


The error reported here that static resources are not found is because the static resources are packaged in the root directory. Therefore, the static resource address in HTML points to the root directory, not /gui. If the nextchat static resource packaging directory is not modified, , you need to rewrite the resource path of the static resources to solve this problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants