鍍金池/ 問答/Linux/ nginx 請求轉(zhuǎn)發(fā)配置

nginx 請求轉(zhuǎn)發(fā)配置

使用nginx做代理,用于轉(zhuǎn)發(fā)api靜態(tài)資源,前臺(tái)應(yīng)用是react 應(yīng)用,可以正常訪問,但在具體的某個(gè)功能頁面進(jìn)行刷新時(shí),得到404 。如果不刷新,則沒有問題。如果react應(yīng)用和nginx在部署在一起時(shí),只需要設(shè)置

location / 
    {
        try_files $uri /index.html;
    }

即可,現(xiàn)在react應(yīng)用和nginx是分開部署的。通過proxy_pass 代理過去的。那么我應(yīng)該如何配置呢?

nginx 配置

server {
    listen 80;
    server_name localhost eoms.xxx.com;
    access_log /var/log/nginx/eoms.access.log;
    location /api/ {
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://api-eoms/public/index.php/api/;
        client_max_body_size         512m;
        client_body_buffer_size      1024k;
        proxy_connect_timeout        100;
        proxy_send_timeout           100;
        proxy_read_timeout           100;
        fastcgi_read_timeout         180;
        proxy_buffer_size            8k;
        proxy_buffers                128 64k;
        proxy_busy_buffers_size      128k;
        proxy_temp_file_write_size   128k;
    }
    location / {
        proxy_redirect off;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://ui-eoms;
    }
}

ps: 使用的docker 部署的。 ui-eoms就是用httpd 部署的react應(yīng)用。因?yàn)閞eact應(yīng)用只有一個(gè)index.html入口文件。所以當(dāng)請求其他地址時(shí)都會(huì)出現(xiàn)404

我希望能支持在任一頁面刷新都能正常工作.

回答
編輯回答
舊言

nginx rewrite 了解下 我就舉個(gè)例子

location / {
        rewrite /(.*) /index.html#$1;
        proxy_redirect off;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://ui-eoms;
    }
2017年7月11日 14:40