location
我对 Nginx 的、指令有所了解rewrite
。
我有一个名为 的文件say_hi.html
,其路径:/opt/app
,其内容:
# file name: /opt/app/say_hi.html
Hi, there!
我想在浏览器中打开此 URL:http://my_site.com/to/be/removed/say_hi.html
并查看内容
Hi, there!
并且 URL 未改变。(例如未更改为http://my_site.com/say_hi.html
:)
我可以在 Nginx 中执行此操作吗?
多谢!
顺便说一句,我已经有这个解决方案,但不能满足我的需求:(它改变了 URL 并返回 301)
server {
listen 80 default_server;
location / {
try_files $uri $uri/ =404;
root /opt/app/;
}
location ~ /to/be/removed {
rewrite ^/abc(.*)$ $1 break;
}
答案1
好的,我通过使用location
+proxy pass
和 a 来解决这个问题virtual host
步骤 1:确定位置并将其提供给proxy
,例如:
location ~ /to/be/removed {
proxy_pass http://localhost:8800;
}
第 2 步:定义代理服务器:
server {
# define a port
listen 8800;
# step 2.1: change "/abc/test" to "/test"
location ~ /abc/test {
root /opt/app/test_folder; # this line must be here ,not removed.
rewrite ^/abc(.*)$ $1 break;
}
# step 2.2:this is the normal way to render html/js
location / {
root /opt/app/test_folder;
}
}
其实还有另一种解决方案:
重新编译front-end
项目(例如vue,react-js,angular)并为其添加前缀。