我有一些使用 linux 的经验,但没有使用 nginx 的经验。我的任务是研究应用服务器的负载平衡选项。
我已经使用 apt-get 安装了 nginx,一切看起来都很好。
我有一些问题。
sites-available 文件夹和 conf.d 文件夹有什么区别。这两个文件夹都包含在 nginx 的默认配置设置中。教程使用两者。它们的用途是什么,最佳实践是什么?
启用站点的文件夹有什么用?我如何使用它?
默认配置引用一个 www-data 用户?我必须创建那个用户吗?如何为该用户提供运行 nginx 的最佳权限?
示例案例。我有一个带有一个 IPV4 地址的网络服务器。我托管了大约 50 个网站,其中只有两个拥有 ssl 证书。我已经为 2 个 ssl 网站配置了虚拟主机,一切正常,除了一个大问题 - 如果我使用 https:// 前缀访问其他 48 个站点(它们没有 ssl 证书),我看到我的最新网站带有 SSL 证书.
可以在非 SSL 网站上阻止 https 前缀吗?或者只有一种解决方案 - 使用专用 IP 地址。如果我有专用的 IP 地址,我将使用以下配置:
server {
listen 111.222.333.444:443 ssl;
}
Run Code Online (Sandbox Code Playgroud)
这样,如果我在非 SSL 网站上强制使用 https - 没有任何反应。
我有一个在通过 HTTPS 运行的 Nginx Web 服务器上运行的网站。我最近注意到有人将他们的域指向我的 Web 服务器,而 Nginx 正在为我的网站提供这个坏域。看起来它甚至在谷歌索引......
Nginx 配置:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;
root /var/www/example.com;
index index.html;
}
Run Code Online (Sandbox Code Playgroud)
我曾尝试添加一条if语句来检查是否$host与此处server_name推荐的匹配
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;
# Check if incoming hostname matches server_name
if ($host != $server_name) {
# If not, return 404
return 404;
}
root /var/www/example.com;
index index.html;
}
Run Code Online (Sandbox Code Playgroud)
这个添加似乎没有帮助。这些都在正确的轨道上吗?我们欢迎所有的建议
我最近在 debian 8 上创建了一个 nginx 服务器。它在 /etc/nginx/sites-available/default 上提供了一个默认配置,它重定向到一个 nginx 欢迎页面。
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name your_server_ip;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Run Code Online (Sandbox Code Playgroud)
我添加了一个新的生产页面,比如“example.com”,上面有 ssl。
在 ../example.com 的配置中,它没有设置为默认服务器。
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
# SSL configuration
listen 443 ssl;
listen [::]:443 …Run Code Online (Sandbox Code Playgroud)