Nginx反向代理、使用OneinStack配置Nginx、多网站配置、多域名配置
文章目录
- 一、卸载原装Nginx
- 二、通过 OneinStack 安装 Nginx
- 三、创建 vhost
- 四、按照提示选择或输入相关信息
文章PDF下载
配不好Nginx
,誓不罢休
本教程适用于
- 不会配置Nginx
- 懒得倒腾的小白站长
- 多个网站需要配置Nginx
本文并没有强调如何配置多个网站,但是,配置多个网站、域名同样可以使用本教程,本人亲测有效,请放心食用。
在配置多个网站时,可以忽略已经配置过的网站,直接启动vhost
脚本配置新的域名即可,需要注意的是,单机配置多个网站一定要注意端口不能重复使用。
一、卸载原装Nginx
很多Nginx用户都是自己配置不成功才转而投奔OneinStack的,所以服务器上可能装有Nginx,为了避免不必要的麻烦,建议卸载原装Nginx:
sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。sudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件。sudo apt-get autoremove # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包。
二、通过 OneinStack 安装 Nginx
点击下方链接进入 OneinStack 官网,仅选择 安装 Nginx,其他的都可以取消选择。
https://oneinstack.com/auto
最后点击 复制安装命令 到服务器执行即可。如果你仅安装 Nginx,你的链接应该是这样:
wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1
这一步会经过编译安装,可能会导致安装时间很漫长,这主要取决于你服务器的性能。
提示: 如果命令执行不成功,可以分开执行每一条命令(最后安装命令需要管理员权限
sudo
)
出现下面的信息即代表安装成功:
Nginx installed successfully!
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
Redirecting to /bin/systemctl start nginx.service
####################Congratulations########################
Total OneinStack Install Time: 5 minutesNginx install dir: /usr/local/nginx
三、创建 vhost
即创建一个站点,你可以通过这样的方式在你的服务器创建无限个站点。接下来的目的就是创建一个站点,并反向代理到你的网站。这一步在此教程使用 ahoh.club 这个域名做演示,实际情况请修改此域名。
进入到 oneinstack 目录,执行 vhost 创建命令
cd oneinstack
sudo sh vhost.sh
如果出现以下异常:
vhost.sh: 23: pushd: not found vhost.sh: 40: ./include/check_os.sh: [[: not found vhost.sh: 40: ./include/check_os.sh: vhost.sh: 40: ./include/check_os.sh: ^RedHat$: not found ^Rocky$: not foundvhost.sh: 40: ./include/check_os.sh: ^openEuler$: not found
请使用命令:
sudo ./vhost.sh
四、按照提示选择或输入相关信息
- 证书配置方式
What Are You Doing?1. Use HTTP Only2. Use your own SSL Certificate and Key3. Use Let's Encrypt to Create SSL Certificate and Keyq. Exit
Please input the correct option:
这一步是选择证书配置方式,如果你有自己的证书,输入 2 即可。如果需要使用 Let’s Encrypt 申请证书,选择 3 即可。(本例中,我们需要使用https访问网站,所以选2)
- 配置域名
Please input domain(example: www.example.com):
输入自己的域名即可,前提是已经提前解析好了域名。(本例中,输入www.ahoh.club)
- 域名根目录
Please input the directory for the domain:www.ahoh.club :
(Default directory: /data/wwwroot/www.ahoh.club):
提示输入站点根目录,因为我们是使用 Nginx 的反向代理,所以这个目录是没有必要配置的,我们直接使用默认的即可(直接回车)。
- 是否添加其他域名
Do you want to add more domain name? [y/n]: y
是否需要添加其他域名,按照需要选择即可,如果不需要,输入 n 即可,这里我们选择y
。
强调:正常情况下,我们不仅仅希望使用地址
www.ahoh.club
访问网站,同时还希望使用ahoh.club
也可以访问我们的网站,所以这里需要选择y
,把ahoh.club
也要加进去。
ahoh.club
属于根域名,www.ahoh.club
属于子域名,如果你有类似于forum.ahoh.club
,这里同样需要选择y
,从而把所有希望跳转网站的域名都加进去。
- 添加新域名
Type domainname or IP(example: example.com other.example.com): ahoh.club
这里我们就把 ahoh.club
输进去。
- 域名跳转
Do you want to redirect from ahoh.club to www.ahoh.club? [y/n]: y
这里是决定 是否需要将 ahoh.club 自动跳转到 www.ahoh.club ,本例中选择y
。
提示: 原则上,这里跳不跳转都是可以的,但是在安装 NodeBB 期间,遇到了一个奇怪的BUG,当使用
ahoh.club
访问贴子的时候,外网连接图片就显示不出来,而使用www.ahoh.club
访问就可以。所以本例选择了跳转。
HTTP
跳转HTTPS
Do you want to redirect all HTTP requests to HTTPS? [y/n]: y
这里决定是否将HTTP
访问跳转到HTTPS
,这里跳不跳都行,但是既然都选择了SSL
,跳转当然更 Fashion
,推荐选择 y
。
- 位置信息询问
不想填可以直接回车,建议好好填写。
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.Country Name (2 letter code) [CN]: State or Province Name (full name) [Shanghai]: BeijingLocality Name (eg, city) [Shanghai]: HaidianOrganization Name (eg, company) [Example Inc.]: AhohOrganizational Unit Name (eg, section) [IT Dept.]:
- 防盗链
Do you want to add hotlink protection? [y/n]: n
是否需要做防盗链处理,按照需要选择即可,本例我们选择 n
。(如果是自己搭的小网站,不建议选择,可能导致图片不显示,确有需要可以选择,如有问题可以再解决。)
- 路径重写
Allow Rewrite rule? [y/n]: n
路径重写配置,我们不需要,选择 n
回车确定即可。
- 请求日志
Allow Nginx/Tengine/OpenResty access_log? [y/n]: y
Nginx 的请求日志,建议选择 y
。
这样就完成了 vhost 站点的创建,最终会输出站点的相关信息:
#######################################################################
# OneinStack for CentOS/RedHat 7+ Debian 8+ and Ubuntu 16+ #
# For more information please visit https://oneinstack.com #
#######################################################################
Your domain: www.ahoh.club
Virtualhost conf: /usr/local/nginx/conf/vhost/www.ahoh.club.conf
Directory of: /data/wwwroot/www.ahoh.club
Self-signed SSL Certificate: /usr/local/nginx/conf/ssl/www.ahoh.club.crt
SSL Private Key: /usr/local/nginx/conf/ssl/www.ahoh.club.key
SSL CSR File: /usr/local/nginx/conf/ssl/www.ahoh.club.csr# Nginx 的配置文件即 /usr/local/nginx/conf/vhost/www.ahoh.club.conf。
别忘了把SSL证书中的文件复制到上面的指定位置!
SSL证书压缩包中通常有四个文件,只需要复制其中的三个就行了
在复制的时候以后缀名为区分
复制示例如下:
sudo cp ~/ssl/ahoh.club_bundle.crt /usr/local/nginx/conf/ssl/ahoh.club.crt
五、 修改 Nginx 配置文件
上方创建 vhost
的过程并没有创建反向代理的配置,所以需要我们自己修改一下配置文件。
使用你熟悉的工具打开配置文件,此教程使用 vim
。
sudo vim /usr/local/nginx/conf/vhost/www.ahoh.club.conf
- 删除一些不必要的配置
location ~ [^/]\.php(/|$) {#fastcgi_pass remote_php_ip:9000;fastcgi_pass unix:/dev/shm/php-cgi.sock;fastcgi_index index.php;include fastcgi.conf;
}
此段配置是针对 php 应用的,删不删都可以,但是本着极致的极客精神,本例中决定删掉。
- 添加
upstream
配置
在server
的同级节点添加如下配置:
upstream ahoh {server 127.0.0.1:8090;
}
提示,127.0.0.1指的是服务器的本机地址不需要改,后面的8090端口号需要改成自己的。
upstream
后面的名字ahoh
可以自己决定,然后记下来,后面的对应节点改成一致就行。
- 在 server 节点添加
/
配置
location / {proxy_set_header HOST $host;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://ahoh;
}
提示:
proxy_pass http://ahoh;
中的网址,指向的就是上面一步upstream
后面的名字,如果修改了那个名字,这里要对应修改。
- 修改
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$
节点
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {proxy_pass http://ahoh; # 和上面一样修改expires 30d;access_log off;
}
- 修改
location ~ .*\.(js|css)?$
节点
location ~ .*\.(js|css)?$ {proxy_pass http://ahoh; # 和上面一样修改expires 7d;access_log off;
}
如果不按照第4、5 以上两步操作,请求一些图片或者样式文件不会经过 ahoh
,也就是你的网站,所以请不要忽略此配置。
- 添加
acme.sh
续签验证路由
OneinStack
使用的acme.sh
管理证书,如果你在创建vhost
的时候选择了使用Let's Encrypt
申请证书,那么OneinStack
会在系统内添加一个定时任务去自动续签证书,acme.sh
默认验证站点所有权的方式为在站点根目录生成一个文件(.well-known
)来做验证,由于配置了反向代理,所以在验证的时候是无法直接访问到站点目录下的.well-known
文件夹下的验证文件的。需要添加如下配置:
location ^~ /.well-known/acme-challenge/ {default_type "text/plain";allow all;root /data/wwwroot/www.ahoh.club/;
}
提示:如果第一步中,你没有选择
3
,就不用操作这一步。
至此,配置修改完毕,保存即可。最终你的配置文件可能如下面配置一样:
upstream ahoh{server 127.0.0.1:8090;
}
server {listen 80;listen [::]:80;listen 443 ssl http2;listen [::]:443 ssl http2;ssl_certificate /usr/local/nginx/conf/ssl/www.ahoh.club.crt;ssl_certificate_key /usr/local/nginx/conf/ssl/www.ahoh.club.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_timeout 10m;ssl_session_cache builtin:1000 shared:SSL:10m;ssl_buffer_size 1400;add_header Strict-Transport-Security max-age=15768000;ssl_stapling on;ssl_stapling_verify on;server_name www.ahoh.club ahoh.club;access_log /data/wwwlogs/www.ahoh.club_nginx.log combined;index index.html index.htm index.php;root /data/wwwroot/www.ahoh.club;if ($ssl_protocol = "") { return 301 https://$host$request_uri; }if ($host != www.ahoh.club) { return 301 $scheme://www.ahoh.club$request_uri; }include /usr/local/nginx/conf/rewrite/none.conf;#error_page 404 /404.html;#error_page 502 /502.html;location / {proxy_set_header HOST $host;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://ahoh;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {expires 30d;proxy_pass http://ahoh;access_log off;}location ~ .*\.(js|css)?$ {expires 7d;proxy_pass http://ahoh;access_log off;}location ~ /(\.user\.ini|\.ht|\.git|\.svn|\.project|LICENSE|README\.md) {deny all;}location /.well-known {allow all;}
}
六、 重载 Nginx 使配置生效
- 验证
nginx
配置
Nginx
默认安装在/usr/local/nginx
,由于本文未配置环境变量,需要进入可执行文件目录下操作。
cd /usr/local/nginx/sbin
sudo ./nginx -t
如果输出如下提示则代表配置有效:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
- 重载 Nginx 配置:
sudo nginx -s reload
至此,整个教程完毕,现在你可以访问域名检查是否已经配置成功。
如果访问网址不成功,可以查看nginx的错误日志:
cat /usr/local/nginx/logs/error.log
有任何问题,都可以留言交流。
文章PDF下载
Nginx反向代理、使用OneinStack配置Nginx、多网站配置、多域名配置相关推荐
- nginx反向代理非80端口/nginx反代非80端口
首先声明,非专业研究nginx的,可以直接复制我的代码到 nginx 配置中再根据个人需求更改 非80端口通过80端口反向代理到非80端口应用,添加下面代码到nginx配置文件最后 server_na ...
- nginx 反向代理到另一个nginx
一.背景 近期部署项目时遇到一个问题,由阿里云解析到一个公网iP,由该公网ip的nginx进行转发.但转发时,该项目为前后端分离,需要解析到远程服务器的xxx目录,这通过一个nginx转发不好解决.通 ...
- 相同Ip 不同端口配置Nginx反向代理Apache
相同Ip 不同端口 配置Nginx反向代理Apache(就是Nginx跳转到Apache) 在linux 一经搭建好环境 先后安装了Nginx 和Apache 由于 默认端口都是:80 一般客户 ...
- Tomcat系列之服务器的基本配置及Nginx反向代理tomcat服务
大纲 一.Tomcat 基本配置 1.为Tomcat提供SysV脚本 2.catalina 脚本讲解 3.telnet 登录管理Tomcat 4.配置Tomcat虚拟主机 5.Tomcat图形管理接口 ...
- 配置nginx反向代理时,要注意的权限设置
MYPM演示环境(www.mypm.cc/mypm)中当下载大的附件,或是页面中有大图片时,就会下载中断或是图版无法显示 也许你要说我用的nginx缺省的设置没碰到这问题,那是因为你的网站没大文件 查 ...
- 使用Nginx反向代理tomcat服务器
使用Nginx反向代理tomcat服务器 2015-04-23 11:19 244人阅读 评论(0) 收藏 举报 分类: Tomcat(5) LNMP/LAMP开发平台研究(10) 版权声明: ...
- [python] tornado supervisor监控 以及 Nginx反向代理
文章目录 Supervisor 简单的tornado supervisor 配置 启动 效果 Nginx反向代理 安装pcre和nginx nginx配置文件 Supervisor Superviso ...
- Nginx反向代理——简单体验Nginx反向代理功能
一.引言 从Nginx入门学习开始.到现在所讲的Nginx反向代理.我们的Nginx学习已经进入白热化状态,前面所学只是铺垫,真正在公司的业务场景中Nginx绝大数用来反向代理+负载均衡所用.相信大家 ...
- nginx反向代理(请求转发-URL匹配规则)
反向代理适用于很多场合,负载均衡是最普遍的用法. nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理. nginx 反向代理官方文档: NGINX REVERSE PROXY 当在 ...
- 微服务架构(5):nginx反向代理cors解决跨域
微服务架构(5):nginx反向代理&&cors解决跨域 学习目标 1.使用域名访问本地项目 1.1.统一环境 1.2.域名解析 1.3.解决域名解析问题 1.4.nginx解决端口问 ...
最新文章
- 一文帮你梳理清楚:奇异值分解和矩阵分解 | 技术头条
- 今晚开播 | 人脸识别的最新进展以及工业级大规模人脸识别实践探讨
- Netty 源码(ChannelHandler 死磕)
- HashMap+双向链表实现LRU
- jQuery学习--选择器的使用
- 提升服务器性能的建议
- LeetCode206 | Reverse Linked List (Easy)
- 有没有词匹配算法_整站关键词SEO的匹配优化方法
- UI线框图模板素材实际应用好帮手
- Mysql学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
- 旅游是开车自驾好还是坐火车好?能否从各个方面解答一下?
- SpingMVC 注解@RequestMapping、@SuppressWarnings、@Scheduled 定时器
- c语言mud文字武侠游戏,文字武侠mud游戏,纯文字武侠mud游戏手机版预约 v1.0-手游汇...
- TeXLive升级教程
- 腾讯面试算法题——编码
- mysql中 创建函数失败_Mysql创建函数出错
- module java.base does not “opens java.lang“ to module spring.core
- 前端自学路线(一定要记笔记)
- C++包扩展_Netgear 网件 EAX80 AX6000规格 无线扩展器 开箱拆解评测
- scrapy抓斗鱼主播的图片