环境:阿里云 centos7
flask web 应用, gunicorn 已经启动,访问ip:8888
正常访问
nginx 正常启动,无法直接访问 ip ,浏览器显示: This site can ’ t be reached
我有两个配置文件conf/nginx.conf
, site-enable/kaoshixing.conf
,内容分别如下:
user root;
worker_processes auto;
# worker_cpu_affinity auto;
error_log /home/admin/kaoshixing/nginx/logs/error.log;
pid /home/admin/kaoshixing/nginx/logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 20480;
}
http {
include mime.types;
default_type application/octet-stream;
fastcgi_intercept_errors on;
log_format milog '$server_addr\t$hostname\t$remote_addr\t$http_x_forwarded_for\t$time_local\t$request_uri\t$request_length\t$bytes_sent\t$request_time\t$status\t$upstream_addr\t$upstream_cache_status\t$upstream_response_time\t$http_user_agent\t';
####full-format log for debug
log_format debug_log '$remote_addr\t$server_addr\t$hostname\t$time_local\t$host\t$request\t$status\t$body_bytes_sent\t$http_referer\t$http_user_agent\t$http_x_forwarded_for\t$request_uri\t$request_length\t$bytes_sent\t$request_body\t$request_time\t$upstream_response_time\t$upstream_addr\t$upstream_cache_status';
access_log /home/admin/kaoshixing/log/nginx/access.log milog;
sendfile on;
keepalive_timeout 65;
client_max_body_size 120m;
server_names_hash_bucket_size 128;
proxy_headers_hash_bucket_size 128;
proxy_headers_hash_max_size 8192;
proxy_connect_timeout 10;
proxy_read_timeout 120;
proxy_send_timeout 120;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
gzip on;
gzip_types application/json application/x-json text/plain application/x-javascript text/css text/javascript application/xml text/xml image/jpeg image/gif image/png;
gzip_proxied expired no-cache no-store private auth;
gzip_min_length 1k;
gzip_buffers 16 64k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_vary on;
limit_req_zone $server_port zone=tp:500m rate=1700r/s;
limit_req_zone $server_port zone=tps:500m rate=1100r/s;
limit_req_zone $binary_remote_addr zone=tip:500m rate=100r/s;
include /home/admin/kaoshixing/nginx/site-enable/*.conf;
}
*
upstream kaoshixing.com_backend{
server 0.0.0.0:8888 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 80;
server_name www.kaoshixing.com;
access_log /home/admin/kaoshixing/nginx/logs/ksxing.com.log milog;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://kaoshixing.com_backend;
}
}
server {
listen 443 ssl;
server_name www.kaoshixing.com;
access_log /home/admin/kaoshixing/nginx/logs/ksxing.com.log milog;
ssl on;
ssl_certificate ssl/kaoshixing.com.crt;
ssl_certificate_key ssl/kaoshixing.com.key;
ssl_session_cache shared:SSL:80m;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://kaoshixing.com_backend;
proxy_redirect http://www.kaoshixing.com https://www.kaoshixing.com;
}
}
server {
listen 80;
server_name kaoshixing.com;
access_log /home/admin/kaoshixing/nginx/logs/ksxing.com.log milog;
location / {
rewrite ^(.*) http://www.$host$1 redirect;
}
}
구성 파일이 올바른지 확인하기 위해 nginx -t를 시도해 보셨나요?
http와 https가 모두 동일한 server_name으로 구성되어 있는지 확인하세요. 포트 80을 https로 구성하고 작동하는지 확인하세요.
server {
listen 80;
listen 443 ssl;
......
}
server_name
을 설정했기 때문에 nginx는 IP가 아닌 도메인 이름만 모니터링합니다. 즉, nginx는 자신의 외부 네트워크 IP를 알지 못하며 구성 파일에서 정보를 가져옵니다.간단한 해결책은
server_name
을 제거하는 것입니다.이렇게 해도 됩니다
server_name 1.1.1.1 www.kaoshixing.com;
하지만 이 방법으로는 범도메인 이름 확인을 수행할 수 없습니다.모든 서버 블록에 server_name을 설정했기 때문에 브라우저가 액세스할 때 nginx는 server_name을 하나씩 일치시킵니다. 둘 중 어느 것도 일치하지 않으면(IP를 사용하여 액세스) nginx는 default_server를 사용하지만 default_server를 설정하지 않았습니다. 문제 아마도 이것이 문제일 것입니다. 서버 블록을 이것으로 변경해 보십시오.
으아악(또한 포트 80은 다른 프로그램이 점유하고 있을 수 있습니다.)
Alibaba Cloud의 보안 정책과 CentOS7의 방화벽 정책을 고려해보세요.
CentOS7은 기본적으로 포트 80을 열지 않습니다.
nginx가 시작되지 않는 구성 문제인지, 아니면 외부 네트워크 텔넷 80이 차단되어 있는지 확인하세요. 내가 만나는 것은 일반적으로 방화벽 설정이나 기본 vps에 설치된 아파치가 80을 차지하고 있기 때문입니다.
국내 클라우드 공급업체의 포트 80을 등록해야 출시할 수 있습니다.
보안 그룹 정책과 VPC 방화벽도 별도로 확인하세요.