好的,这个任务应该很简单,但我无法让它工作。我想在我的域名之后(实际上是在该域名的 IP 之后)有一个子文件夹,它重定向到同一服务器上的特定端口。本质上,我想摆脱必须使用许多端口的情况。
这是我的 nginx 配置
server {
listen 80;
index index.html index.htm index.nginx-debian.html index.php;
server_name aaa.bbb.ccc.ddd;
location ^~ /app2 {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://aaa.bbb.ccc.ddd:8001;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,在访问 aaa.bbb.ccc.ddd/app2 时,我希望将其解析为http://aaa.bbb.ccc.ddd:8001。
这可能会很复杂。我在这里缺少什么?
谢谢帕特
我们配置了IIS 7网络服务器,并希望在同一台机器上使用Tomcat为TeamCity安装创建反向代理。
IIS 服务器站点是https://somesite,我希望 TeamCity 显示为https://somesite/teamcity重定向到http://localhost:portnumber.
我已经安装了IIS URL 重写扩展和应用程序请求路由来尝试设置反向代理,但无法使其工作。
我找到的最接近的答案是一个旧的 StackOverflow 问题:https ://stackoverflow.com/questions/331755/how-do-i-setup-teamcity-for-public-access-over-https
不幸的是没有任何工作例子。
我已经搜索了很多,但似乎找不到相关的例子。
任何帮助表示赞赏!
我想在我的 VPS 上为我的 Heroku 应用程序(http://lovemaple.heroku.com)设置一个反向代理所以如果我访问mysite.com/blog我可以在http://lovemaple.heroku.com 中获取内容
我按照Apache wiki上的说明进行操作。
location /couchdb {
rewrite /couchdb/(.*) /$1 break;
proxy_pass http://localhost:5984;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Run Code Online (Sandbox Code Playgroud)
我改变了它以适应我的情况:
location /blog {
rewrite /blog/(.*) /$1 break;
proxy_pass http://lovemaple.heroku.com;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Run Code Online (Sandbox Code Playgroud)
当我访问时mysite.com/blog,页面显示出来,但无法获取 js/css 文件(404)。
他们的链接变为mysite.com/style.css但不是mysite.com/blog/style.css。
出了什么问题,我该如何解决?
我设置了 apache 来代理 tomcat,但是当我定位页面时出现以下错误。我有时会得到一个空白页或 503:
[错误]
[Mon Dec 03 04:58:16 2012] [error] proxy: ap_get_scoreboard_lb(2) failed in child 29611 for worker proxy:reverse
[Mon Dec 03 04:58:16 2012] [error] proxy: ap_get_scoreboard_lb(1) failed in child 29611 for worker https://localhost:8443/
[Mon Dec 03 04:58:16 2012] [error] proxy: ap_get_scoreboard_lb(0) failed in child 29611 for worker http://localhost:8080/
Run Code Online (Sandbox Code Playgroud)
我在 vm 上配置了两个 vhost,如下所示:
[http 主机]
<VirtualHost *:80>
ServerName www.mysite.net
ServerAlias mysite.net
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/ retry=0
ProxyPassReverse …Run Code Online (Sandbox Code Playgroud) 我们正在使用 nginx 来平衡对我们应用程序的请求。我们发现当请求超时时 nginx 会切换到不同的上游服务器(很好)。但是,它对 PUT 和 POST 请求执行此操作,这可能会导致不良结果(数据存储两次)。是否可以将 nginx 配置为仅在超时时重试 GET 请求?或者有其他方法可以解决问题吗?
我们的配置如下:
upstream mash {
ip_hash;
server 127.0.0.1:8081;
server 192.168.0.11:8081;
}
server {
...
location / {
proxy_pass http://mash/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Run Code Online (Sandbox Code Playgroud) 我遇到了一个非常具体的情况,虽然还有其他方法可以做到这一点,但我有点着迷于此,并想找到一种完全像这样的方法:
假设我有一台服务器运行多个服务,这些服务隐藏在隔离的 docker 容器中。由于大多数这些服务都是 http,我使用 nginx 代理向每个服务公开特定的子域。例如,节点服务器运行在 docker 容器上,其端口80绑定到127.0.0.1:8000主机上。我将在 nginx 中创建一个虚拟主机,将所有请求代理myapp.mydomain.com到http://127.0.0.1:8000. 这样,docker 容器不能从外部访问,除了通过myapp.mydomain.com.
现在我想以指向 gogs容器的方式启动一个gogsgogs.mydomain.com docker 容器。所以我启动了这个 gogs 容器,端口8000绑定到127.0.0.1:8001主机上。和一个 nginx 站点代理请求gogs.mydomain.com到http://127.0.0.1:8001并且它运行良好......
但是,gogs 是一个 git 容器,我也想像通过那样访问存储库,git@gogs.mydomain.com:org/repo但这不适用于当前设置。使这项工作的一种方法22是将容器的端口绑定到0.0.0.0:8022主机上的端口,然后 git ssh url 可以是类似git@gogs.mydomain.com:8022/repo.
(这似乎不工作;当我推到与URI这样的原点,混帐要求密码对git上gogs.mydomain.com-而不是gogs.mydomain.com:8022-但不过这可能是什么我做错了,超出范围的这个问题,我也很感激任何诊断)
我主要担心的是,我希望<gogs container>:22代理ssh 端口,就像我使用 nginx 代理 http 端口一样;即任何gogs.mydomain.com …
我目前使用 Apache 作为我的 LXD 容器的代理,使用这种设置:
<VirtualHost *:80>
ServerName example.com
ProxyRequests off
ProxyPass / http://10.0.0.142/ retry=0
ProxyPassReverse / http://10.0.0.142/
ProxyPreserveHost On
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我想切换到traefik。我试过这个配置:
defaultEntryPoints = ["http"]
[entryPoints]
[entryPoints.http]
address = ":80"
[backends]
[backends.backend1]
[backends.backend1.servers.server1]
url = "http://10.0.0.142"
[frontends]
[frontends.frontend1]
backend = "backend1"
passHostHeader = true
[frontends.frontend1.routes.example]
rule = "Host:example.com"
Run Code Online (Sandbox Code Playgroud)
(注意:我不打算使用 docker,我也不想这样做。)
我正在尝试做一些在我看来很简单的事情,但我一定是愚蠢的或错过了一些非常明显的事情,因为我无法弄清楚。
我想访问在我的服务器上运行的多个 Web 应用程序,每个应用程序都有一个唯一的前缀:
http://mywebserver/app1 -> localhost:9001
http://mywebserver/app2 -> localhost:9002
...
Run Code Online (Sandbox Code Playgroud)
据我了解,我需要将 Nginx 配置为反向代理,所以我这样做了:
server {
listen 80;
server_name mywebserver;
location /app1{
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;
proxy_pass http://127.0.0.1:9001/;
}
...
}
Run Code Online (Sandbox Code Playgroud)
此配置允许我访问应用程序的主页http://mywebserver/app1,但未加载静态内容。
当我打开我的浏览器的控制台上,我可以看到它正试图从获得的资源http://mywebserver/static/custom/index.js,而不是像http://mywebserver/app1/static/custom/index.js。
我尝试root在 location 块中添加一个指令来为静态提供服务,但由于静态内容请求是 on/而不是 on ,因此未将其考虑在内/app1。
如何解决这个问题?有什么明显的我遗漏了还是我完全误解了反向代理的概念?
谢谢你。
nginx web-applications reverse-proxy static-content static-files
使用 Nginx 作为反向代理,如何在 cookie 中添加 samesite=strict 或 samesite=lax?
我是 nginx 的新手,但我需要根据子域创建一些代理规则以重定向到另一个 IP 和端口。
这是我的情况:
My domain.com has IP y.y.y.y and accepts requests on port 80
My subdomains are:
- admin.domain.com -> I need to proxy to x.x.x.x:3434
- user.domain.com -> I need to proxy tox.x.x.x:3435
- vendor.domain.com -> I need to proxy to x.x.x.x:3436
Run Code Online (Sandbox Code Playgroud)
所有子域都映射到y.y.y.y但在 nginx 中我需要代理到x.x.x.x:ZZZ(ZZZ 是其他服务的特定端口)。
我正在尝试这个例子但没有成功:https : //rainbow-six3.com/plesknginx/
有人可以提供一个示例,如何在 nginx 上配置它?