Nginx 反向代理基本使用
Nginx 反向代理基本使用
2023年7月26日
摘要
Nginx 相较于 Apache 更加轻量化,常作为需求并不复杂的反向代理服务器使用,本文主要提供了一个用于部署 Nginx 的 Docker-Compose 脚本和一个 Nginx 的配置文件模版。
Docker-Compose 部署脚本
使用 Docker-Compose 是最简单的部署方法,且如果有需求的话,可以轻易的在一个系统中部署多个 Nginx 服务器。Docker-Compose 的模版如下:
version: "2"
services:
nginx:
image: linuxserver/nginx:latest
container_name: nginx
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
volumes:
- {CONFIG_MAPPING_PATH}:/config
ports:
- {HTTP_PORT}:80
- {HTTPS_PORT}:443
restart: unless-stopped
此模版使用了专门构建各种易用的 Docker 容器的开源组织 LinuxServer 构建的 Nginx 容器,使用时请将 {CONFIG_MAPPING_PATH}
更改为系统中配置文件的映射路径,并将 HTTP_PORT
和 HTTPS_PORT
更改为服务器对外暴露的端口号。
Nginx 配置文件
这里提供了一个 Nginx 模版配置文件:
user root;
worker_processes auto;
events {
worker_connections 768;
multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /config/log/nginx/access.log;
error_log /config/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
server {
listen 80;
server_name LISTEN_DOMAIN; # Modify
location / {
proxy_pass http://HOSTNAME:PORT; # Modify
proxy_redirect off;
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-Host $server_name;
}
}
server {
listen 443 ssl;
server_name LISTEN_DOMAIN; # Modify
ssl_certificate /config/keys/psc/cert.crt;
ssl_certificate_key /config/keys/psc/cert.key;
location / {
proxy_pass http://HOSTNAME:PORT; # Modify
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
daemon off;
只用更改注释了 # Modify
的部份即可。server_name
是浏览器用户输入的域名,例如 blog.pscpeng.xyz
或是 research.pscpeng.xyz
即使他们对应同一个 IP,也会因为浏览器访问时协议头部携带的信息告诉 Nginx 用户输入的是哪个域名,Nginx 会根据这个域名决定和配置文件中的哪个 server
项建立连接。 proxy_pass
是反向代理的背后真正的那个服务器地址,一般都是局域网地址。
License:
CC BY 4.0