Nginx源安装与反向代理配置 作者: Hogwarts 发布于: 2022-03-10 更新于: 2024-02-24 分类: 默认分类 Nginx反向代理的调试弄得我真是生无可恋! 网络上一大把教程,仅仅照抄是肯定不行的。Nginx的功能十分强大,细说十天也说不完,就按需求聊了。 说一下需求吧:A是正常站,但不想IP外露。B安装Nginx反向代理A站,冲在前面。如果B被打则域名解析到A套CF。还有或许A站的443端口有程序占用,用另外的端口做站也可用B反代,不暴露A站的端口。 #一、Nginx的安装 ##官方安装教程 参考网址:`https://nginx.org/en/linux_packages.html` `https://nginx.org/en/linux_packages.html#Debian` ##1.1 以Debian11为例 ###1.1.1 安装先决条件 apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring ###1.1.2 导入官方 nginx 签名密钥,以便 apt 可以验证包的真实性。获取密钥 curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null ###1.1.3 要为稳定的 nginx 包设置 apt 存储库,请运行以下命令(推荐) echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | tee /etc/apt/sources.list.d/nginx.list ###1.1.4 设置存储库固定以更喜欢我们的包而不是分发提供的包 echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \ | tee /etc/apt/preferences.d/99nginx ###1.1.5 要安装 nginx,请运行以下命令 apt update && apt install nginx ~~注意:root用户安装时不需输入sudo,且`| sudo tee`改为`|tee`,竖道与tee间不要有空格。~~ ##1.2 以RockyLinux为例 ###1.2.1 先决条件 yum install yum-utils ###1.2.2 设置 yum 存储库 vim /etc/yum.repos.d/nginx.repo #输入以下内容 [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true ###1.2.3 安装命令 yum update && yum install nginx -y 安装过程有一个核对指纹的提示 Importing GPG key 0x7BD9BF62: Userid : "nginx signing key " Fingerprint: 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 From : https://nginx.org/keys/nginx_signing.key Is this ok [y/N]: y ##1.2.4 安装完成后测试 在浏览器中输入IP地址查看是否安装成功。 如未出现Nginx默认页,运行下列命令。 nginx -s reload 可能报错:`nginx -s reload nginx: [error] invalid PID number "" in "/var/run/nginx.pid"` 则运行: pkill -9 nginx nginx -c /etc/nginx/nginx.conf nginx -s reload ##1.3 编译安装 算了吧,太麻烦了,有空再写吧。 ##1.4 简单安装 apt update && apt upgrade -y apt install nginx -y #1.4 安装程序的区别 ###1.4.1 版本不同 目前官方安装的最新稳定版本是1.20.1。 简单安装的版本是1.18.0。 ###1.4.2 文件差别 官方安装后文件是完全的。 简单安装有可能nginx.conf和defaule.conf不存在。也可能分系统,Debian10就没有这个问题。 nginx.conf可以在网上找一个,保存在`/etc/nginx`路径中。 `include /etc/nginx/conf.d/*.conf;`这项不要加#号。 Rockylinux9源安装后默认html在 `/usr/share/nginx/html`下。 #二、反向代理的配置文件 闲言碎语不讲了直接列出配置文件了。 此文件存放在`/etc/nginx/conf.d`路径中,名称随意,但必须以`.conf`结尾。 server{ listen 80; server_name 你的域名; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name 你的域名; index index.php index.html index.htm; ssl_certificate /etc/ssl/fullchain.cer; #证书路径 ssl_certificate_key /etc/ssl/private.key; #密钥路径 access_log /var/log/nginxaccess.log; error_log /var/log/nginxerror.log; ssl_protocols TLSv1.2 TLSv1.3; #经测试,没有这几个ssl也能正常运行。 ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers on; ssl_early_data on; location / { proxy_pass https://你的域名:A站端口; #端口是443的话可省略,直接写域名即可。 proxy_ssl_server_name on; #这是最最重要的一项! 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; } } #三、修改hosts vim /etc/hosts 将A站的IP和指向B站的域名按格式填入。 A站IP以104.243.26.26为例,域名以domain.com为例。 格式为:IP 域名 #中间有空格。 示例为:104.243.26.26 domain.com #四、重启Nginx systemctl restart nginx 有问题的话看日志排除吧 systemctl status nginx tail /var/log/nginxaccess.log tail /var/log/nginxerror.log #五、我的参考 看`https://stackoverflow.com/questions/38375588/nginx-reverse-proxy-to-heroku-fails-ssl-handshake` 排除的错误。 #六、未完待续 应该还能在配置中加入缓存项,加快浏览的速度。 技术理论和配置经验不足。 ##水平有限,仅供参考。 标签: nginx, 反向代理