我的服务器有公共主机名my_machine.my_company.org:8080
。我想将所有传入的 http 请求重定向到 localhost:8080。
我该怎么做?我使用的是 ubuntu 15.10。
我为什么要这样做?因为我有 的 SSO 证书localhost:8080
,但没有公共主机名的证书。
答案1
本指南解释了如何将 NGINX 设置为 Jenkins 的反向代理,但你可以省略 Jenkins 部分并最终使用反向代理。
它可以归结为安装 NGINX,然后为您想要代理的站点添加以下内容:
server {
listen 80;
server_name my_machine.my_company.org;
access_log /var/log/nginx/my_machine.access.log;
location / {
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;
# Fix the “It appears that your reverse proxy set up is broken" error.
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 http://my_machine.my_company.org:8080;
}
}
编辑:如果您只想重定向请求,那么可以请使用以下设置。不过,对于从其他机器访问站点的用户来说,这将导致失败。
server {
listen 80;
return 301 http://my_machine.my_company.org$request_uri;
}