Nginx反向代理配置

本文最后更新于:2024年9月12日 中午

Nginx反向代理配置

前言

今天在服务器搭了好多个服务,感觉挨个输端口太麻烦了,感觉每个端口用个域名绑定得了,因此有了这篇文章,使用Nginx配置反向代理,实现域名对内部网络端口的功能,话不多说,直接开始。

Nginx安装

这里直接用docker安装一个nginx,开放80端口,作为入口点,指定配置文件nginx.conf,直接使用docker-compose比较方便一下,下面为具体示例:

首先,在/root/docker-compose/data/nginx/目录下创建nginx.conf默认配置文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
user  nginx;
worker_processes auto;

error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;


events {
worker_connections 1024;
}


http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/vhost/*.conf;
}

将该文件直接映射到容器内部即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: "3"
services:
nginx:
image: nginx
volumes:
- /root/docker-compose/data/nginx/nginx.conf:/etc/nginx/nginx.conf # nginx默认配置文件
- /root/docker-compose/data/nginx/vhost/:/etc/nginx/vhost # 自定义配置文件,下一步会用到。
ports:
- "80:80"
environment:
- NGINX_PORT=80
extra_hosts:
- "host.docker.internal:host-gateway" # 将宿主机ip映射到容器内部

直接访问8080端口,看到nginx欢迎界面,即表示安装成功。

Nginx配置

下面进行反向代理操作:

  • 修改nginx.conf,添加自定义配置include /etc/nginx/vhost/*.conf;,修改后配置如下所示。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    user  nginx;
    worker_processes auto;

    error_log /var/log/nginx/error.log notice;
    pid /var/run/nginx.pid;


    events {
    worker_connections 1024;
    }


    http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;

    sendfile on;
    #tcp_nopush on;

    keepalive_timeout 65;

    #gzip on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/vhost/*.conf; # 添加自定义配置信息
    }
  • /root/docker-compose/data/nginx/vhost/创建reverse.conf用于配置反向代理。

    1
    2
    3
    4
    5
    6
    7
    server {
    listen 80;
    server_name overleaf.domain.com; # 服务器地址或绑定域名
    location / { # 访问80端口后的所有路径都转发到 proxy_pass 配置的ip中
    proxy_pass http://host.docker.internal:80; # 配置反向代理的ip地址和端口号 【注:url地址需加上http:// 或 https://】
    }
    }

    上述配置表示,将访问overleaf.domain.com域名的所有路径,转发到http://host.docker.internal:80位置。

  • 根据不同的后缀名访问不同的服务器地址,下面配置则将domain.com/overleaf转发到http://host.docker.internal:80,将将domain.com/aria2转发到http://host.docker.internal:6800

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    server {
    listen 80;
    server_name www.domain.com;# 服务器地址或绑定域名

    location ^~ /overleaf { # ^~/overleaf 表示匹配前缀为api的请求
    proxy_pass http://host.docker.internal:80/; # 注:proxy_pass的结尾有/, -> 效果:会在请求时将/overleaf/*后面的路径直接拼接到后面

    }

    location ^~ /aria2/ { # ^~aria2/ 表示匹配前缀为blog/后的请求
    proxy_pass http://host.docker.internal:6800/;
    }
    }
  • 经过上述配置,就可以正常使用了,快去试试吧。


Nginx反向代理配置
https://genioco.github.io/2024/09/12/Guide/nginx反向代理配置/
作者
BadWolf
发布于
2024年9月12日
许可协议